Fix update user data bug 71/162571/1
authorhyunho <hhstark.kang@samsung.com>
Mon, 4 Dec 2017 08:41:42 +0000 (17:41 +0900)
committerhyunho <hhstark.kang@samsung.com>
Mon, 4 Dec 2017 08:41:42 +0000 (17:41 +0900)
Change-Id: Iee71a37968f84c6bdb03c423328e3e9d06d49dc2
Signed-off-by: hyunho <hhstark.kang@samsung.com>
src/message_port_remote.c

index e39f0cc..33834ab 100755 (executable)
@@ -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;
        }