diff options
author | hyunho <hhstark.kang@samsung.com> | 2017-12-04 17:41:42 +0900 |
---|---|---|
committer | hyunho <hhstark.kang@samsung.com> | 2017-12-04 17:41:42 +0900 |
commit | 53185c6087ef0313000937c97d4efde1eb0e71eb (patch) | |
tree | 8dd0986146107d99867822dd6f24a39e24b275da | |
parent | da991772118c8f53f97256782c24012704d2718f (diff) | |
download | message-port-53185c6087ef0313000937c97d4efde1eb0e71eb.tar.gz message-port-53185c6087ef0313000937c97d4efde1eb0e71eb.tar.bz2 message-port-53185c6087ef0313000937c97d4efde1eb0e71eb.zip |
Fix update user data bug
Change-Id: Iee71a37968f84c6bdb03c423328e3e9d06d49dc2
Signed-off-by: hyunho <hhstark.kang@samsung.com>
-rwxr-xr-x | src/message_port_remote.c | 21 |
1 files changed, 21 insertions, 0 deletions
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; } |