Store methods until we have the reply.

Alloc the correct amount of mem.


SVN revision: 24235
This commit is contained in:
sebastid 2006-07-27 14:06:04 +00:00 committed by sebastid
parent 83e8ea7c56
commit 2e58ad9aad
3 changed files with 11 additions and 12 deletions

View File

@ -159,8 +159,8 @@ ecore_dbus_server_connect(Ecore_DBus_Type compl_type, char *name, int port,
svr->cnt_msg = 0;
svr->auth_type = -1;
svr->auth_type_transaction = 0;
svr->methods = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
ecore_hash_set_free_value(svr->methods, free);
svr->messages = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
ecore_hash_set_free_value(svr->messages, ECORE_FREE_CB(_ecore_dbus_message_free));
servers = _ecore_list2_append(servers, svr);
return svr;
@ -172,7 +172,7 @@ ecore_dbus_server_del(Ecore_DBus_Server *svr)
if (svr->server) ecore_con_server_del(svr->server);
servers = _ecore_list2_remove(servers, svr);
if (svr->unique_name) free(svr->unique_name);
ecore_hash_destroy(svr->methods);
ecore_hash_destroy(svr->messages);
free(svr);
}
@ -364,13 +364,13 @@ _ecore_dbus_event_server_data(void *udata, int ev_type, void *ev)
/* Trap known messages */
if (msg->type == ECORE_DBUS_MESSAGE_TYPE_METHOD_RETURN)
{
//char *method;
unsigned int *serial;
serial = ecore_dbus_message_header_field_get(msg, ECORE_DBUS_HEADER_FIELD_REPLY_SERIAL);
//method = ecore_hash_remove(svr->methods, (void *)(ev->header.reply_serial));
if (serial)
{
Ecore_DBus_Message *sent;
sent = ecore_hash_remove(svr->messages, (void *)(*serial));
if (*serial == svr->hello)
{
Ecore_DBus_Event_Server_Add *svr_add;
@ -398,6 +398,7 @@ _ecore_dbus_event_server_data(void *udata, int ev_type, void *ev)
ecore_event_add(ECORE_DBUS_EVENT_SERVER_METHOD_RETURN, ev2,
_ecore_dbus_event_server_data_free, NULL);
}
_ecore_dbus_message_free(sent);
}
else
{
@ -477,7 +478,7 @@ _ecore_dbus_event_create(Ecore_DBus_Server *svr, Ecore_DBus_Message *msg)
Ecore_DBus_Message_Field *f;
int i = 0;
ev->args = malloc(ecore_list_nodes(msg->fields) * sizeof(Ecore_DBus_Event_Arg *));
ev->args = malloc(ecore_list_nodes(msg->fields) * sizeof(Ecore_DBus_Event_Arg));
ecore_list_goto_first(msg->fields);
while ((f = ecore_list_next(msg->fields)))
{

View File

@ -21,7 +21,7 @@ ecore_dbus_message_new_method_call(Ecore_DBus_Server *svr, char *destination,
char *path, char *interface, char *method,
char *fmt, ...)
{
unsigned int serial, body_start;
unsigned int body_start;
char buf[1024];
Ecore_DBus_Message_Field_Array *arr;
@ -147,11 +147,9 @@ ecore_dbus_message_new_method_call(Ecore_DBus_Server *svr, char *destination,
snprintf(buf, sizeof(buf), "%s.%s", interface, method);
else
strcpy(buf, method);
ecore_hash_set(svr->methods, (void *)msg->serial, strdup(buf));
ecore_hash_set(svr->messages, (void *)msg->serial, msg);
serial = msg->serial;
_ecore_dbus_message_free(msg);
return serial;
return msg->serial;
}
EAPI void

View File

@ -63,7 +63,7 @@ struct _Ecore_DBus_Server
int auth_type_transaction;
int cnt_msg;
Ecore_Hash *methods;
Ecore_Hash *messages;
unsigned int hello;
char *unique_name;
};