From 53185c6087ef0313000937c97d4efde1eb0e71eb Mon Sep 17 00:00:00 2001 From: hyunho Date: Mon, 4 Dec 2017 17:41:42 +0900 Subject: [PATCH] Fix update user data bug Change-Id: Iee71a37968f84c6bdb03c423328e3e9d06d49dc2 Signed-off-by: hyunho --- src/message_port_remote.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/message_port_remote.c b/src/message_port_remote.c index e39f0cc..33834ab 100755 --- a/src/message_port_remote.c +++ b/src/message_port_remote.c @@ -519,6 +519,26 @@ static bool __callback_info_append(message_port_callback_info_s *callback_info) return true; } +static void __callback_info_update_user_data(int local_id, message_port_message_cb callback, void *user_data) +{ + GList *callback_info_list; + GList *iter; + message_port_callback_info_s *callback_info; + + callback_info_list = g_hash_table_lookup(__callback_info_hash, GUINT_TO_POINTER(local_id)); + if (callback_info_list != NULL) { + for (iter = callback_info_list; iter != NULL; iter = iter->next) { + callback_info = (message_port_callback_info_s *)iter->data; + if (callback_info->local_info != NULL) { + callback_info->local_info->callback = callback; + callback_info->local_info->user_data = user_data; + } + } + } else { + _LOGE("fail to find local_id %d ", local_id); + } +} + static bool __receive_message(GVariant *parameters, GDBusMethodInvocation *invocation) { char *local_port = NULL; @@ -948,6 +968,7 @@ int register_message_port(const char *local_port, bool is_trusted, message_port_ if (is_local_port_registed(local_port, is_trusted, &local_id, &port_info)) { port_info->callback = callback; port_info->user_data = user_data; + __callback_info_update_user_data(local_id, callback, user_data); return local_id; } -- 2.7.4