summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhyunho <hhstark.kang@samsung.com>2017-12-04 17:41:42 +0900
committerhyunho <hhstark.kang@samsung.com>2017-12-04 17:41:42 +0900
commit53185c6087ef0313000937c97d4efde1eb0e71eb (patch)
tree8dd0986146107d99867822dd6f24a39e24b275da
parentda991772118c8f53f97256782c24012704d2718f (diff)
downloadmessage-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-xsrc/message_port_remote.c21
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;
}