From 2e58ad9aadf6990b68b55d7ea366c373b1eb41d5 Mon Sep 17 00:00:00 2001 From: sebastid Date: Thu, 27 Jul 2006 14:06:04 +0000 Subject: [PATCH] Store methods until we have the reply. Alloc the correct amount of mem. SVN revision: 24235 --- legacy/ecore/src/lib/ecore_dbus/ecore_dbus.c | 13 +++++++------ .../ecore/src/lib/ecore_dbus/ecore_dbus_message.c | 8 +++----- .../ecore/src/lib/ecore_dbus/ecore_dbus_private.h | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus.c b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus.c index c7430933b5..21c4ea6eda 100644 --- a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus.c +++ b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus.c @@ -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))) { diff --git a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_message.c b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_message.c index a08f5987a4..24a0707c7e 100644 --- a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_message.c +++ b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_message.c @@ -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 diff --git a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_private.h b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_private.h index 2134a22c63..f05dc7473b 100644 --- a/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_private.h +++ b/legacy/ecore/src/lib/ecore_dbus/ecore_dbus_private.h @@ -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; };