From: SukhyungKang Date: Thu, 4 Jan 2024 01:47:34 +0000 (+0900) Subject: Move subscribe dbus signal later X-Git-Tag: accepted/tizen/unified/20240105.105451~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db5051a620daea048470dfd642e80dbe1a6ee03b;p=platform%2Fcore%2Fapi%2Fnotification.git Move subscribe dbus signal later - dbus signal can be unsubscribe in case delete and add noti almost same time. so move subscribe later to avoid this. Change-Id: Ife3480693ec5c6888802e095321cd0efc2c2a0db Signed-off-by: SukhyungKang --- diff --git a/notification/include/notification_ipc.h b/notification/include/notification_ipc.h index b88de0a2..18899310 100644 --- a/notification/include/notification_ipc.h +++ b/notification/include/notification_ipc.h @@ -107,6 +107,8 @@ int notification_ipc_socket_get_write_buf_size(int fd, unsigned int *size); int notification_ipc_socket_write(int fd, const char *buffer, unsigned int nbytes); int notification_ipc_socket_write_string(int fd, const char *buffer, unsigned int string_len); int notification_ipc_socket_read(int fd, char *buffer, unsigned int nbytes); + +int notification_ipc_event_monitor_init(void); #ifdef __cplusplus } #endif diff --git a/notification/src/notification_internal.c b/notification/src/notification_internal.c index 79059f9c..045d8a28 100644 --- a/notification/src/notification_internal.c +++ b/notification/src/notification_internal.c @@ -1151,6 +1151,7 @@ EXPORT_API int notification_insert_for_uid(notification_h noti, { int ret; int id; + bool event_flag; if (noti == NULL) return NOTIFICATION_ERROR_INVALID_PARAMETER; @@ -1172,6 +1173,16 @@ EXPORT_API int notification_insert_for_uid(notification_h noti, if (priv_id != NULL) *priv_id = noti->priv_id; + ret = notification_get_event_flag(noti, &event_flag); + if (ret != NOTIFICATION_ERROR_NONE) + return ret; + + if (event_flag == true) { + ret = notification_ipc_event_monitor_init(); + if (ret != NOTIFICATION_ERROR_NONE) + return ret; + } + return NOTIFICATION_ERROR_NONE; } @@ -1420,6 +1431,7 @@ EXPORT_API int notification_post_for_uid(notification_h noti, uid_t uid) int ret = 0; int id = 0; GList *file_list; + bool event_flag; if (noti == NULL) return NOTIFICATION_ERROR_INVALID_PARAMETER; @@ -1437,6 +1449,16 @@ EXPORT_API int notification_post_for_uid(notification_h noti, uid_t uid) if (ret == NOTIFICATION_ERROR_NONE) { noti->priv_id = id; INFO("Posted notification id[%d]", id); + + ret = notification_get_event_flag(noti, &event_flag); + if (ret != NOTIFICATION_ERROR_NONE) + return ret; + + if (event_flag == true) { + ret = notification_ipc_event_monitor_init(); + if (ret != NOTIFICATION_ERROR_NONE) + return ret; + } } else { g_list_foreach(file_list, __remove_private_file, NULL); } @@ -1716,6 +1738,10 @@ EXPORT_API int notification_post_with_event_cb_for_uid(notification_h noti, even find_list = g_list_find_custom(__noti_event_cb_list, GINT_TO_POINTER(priv_id), (GCompareFunc)__priv_id_compare); + ret = notification_ipc_event_monitor_init(); + if (ret != NOTIFICATION_ERROR_NONE) + return ret; + if (find_list) { info = g_list_nth_data(find_list, 0); info->cb = cb; diff --git a/notification/src/notification_ipc.c b/notification/src/notification_ipc.c index aa39bda3..62a08e2b 100644 --- a/notification/src/notification_ipc.c +++ b/notification/src/notification_ipc.c @@ -371,7 +371,7 @@ static void _add_noti_notify(GVariant *parameters) GVariant *body = NULL; uid_t uid; - DBG("add noti notify"); + WARN("add noti notify"); noti = notification_create(NOTIFICATION_TYPE_NOTI); if (!noti) { ERR("Failed to create notification handle"); @@ -572,7 +572,7 @@ static void _handle_noti_notify(GDBusConnection *connection, GVariant *parameters, gpointer user_data) { - DBG("own_name : %s signal_name: %s", + WARN("own_name : %s signal_name: %s", g_dbus_connection_get_unique_name(connection), signal_name); @@ -672,7 +672,7 @@ static int _dbus_event_handler_signal_init(void) NULL, NULL); - DBG("subscribe id[%d]", id); + WARN("subscribe id[%d]", id); if (id == 0) { ret = NOTIFICATION_ERROR_IO_ERROR; ERR("Failed to subscribe connection signal"); @@ -684,7 +684,6 @@ static int _dbus_event_handler_signal_init(void) return ret; } -/* LCOV_EXCL_START */ static int _dbus_signal_init(void) { int id; @@ -702,7 +701,7 @@ static int _dbus_signal_init(void) NULL, NULL); - DBG("subscribe id : %d", id); + WARN("subscribe id : %d", id); if (id == 0) { ret = NOTIFICATION_ERROR_IO_ERROR; ERR("Failed to register dbus_interface"); @@ -929,16 +928,15 @@ static int _send_async_noti(GVariant *body, result_cb_item *cb_item, char *cmd) } /* LCOV_EXCL_STOP */ - int notification_ipc_request_insert(notification_h noti, int *priv_id) { int result; int id = NOTIFICATION_PRIV_ID_NONE; - bool event_flag; GDBusMessage *reply = NULL; GVariant *body; GVariant *reply_body; + WARN("request insert noti"); result = _dbus_init(); if (result != NOTIFICATION_ERROR_NONE) { /* LCOV_EXCL_START */ @@ -947,16 +945,6 @@ int notification_ipc_request_insert(notification_h noti, int *priv_id) /* LCOV_EXCL_STOP */ } - result = notification_get_event_flag(noti, &event_flag); - if (result != NOTIFICATION_ERROR_NONE) - return result; - - if (event_flag == true && event_monitor_id == 0) { - result = _dbus_event_handler_signal_init(); - if (result != NOTIFICATION_ERROR_NONE) - return result; - } - /* Initialize private ID */ noti->group_id = NOTIFICATION_GROUP_ID_NONE; noti->internal_group_id = NOTIFICATION_GROUP_ID_NONE; @@ -984,7 +972,7 @@ int notification_ipc_request_insert(notification_h noti, int *priv_id) if (reply) g_object_unref(reply); - DBG("priv_id[%d] result[%d]", id, result); + WARN("priv_id[%d] result[%d]", id, result); return result; } @@ -1100,6 +1088,7 @@ int notification_ipc_request_delete_single(notification_type_e type, char *app_i GVariant *body; GVariant *reply_body; + WARN("request del noti [%d]", priv_id); result = _dbus_init(); if (result != NOTIFICATION_ERROR_NONE) { /* LCOV_EXCL_START */ @@ -1119,7 +1108,7 @@ int notification_ipc_request_delete_single(notification_type_e type, char *app_i if (reply) g_object_unref(reply); - DBG("result[%d]", result); + WARN("result[%d]", result); return result; } @@ -2728,5 +2717,14 @@ void notification_ipc_event_monitor_fini(void) g_dbus_connection_signal_unsubscribe(_gdbus_conn, event_monitor_id); event_monitor_id = 0; + WARN("event monitor fini"); +} +/* LCOV_EXCL_STOP */ + +/* LCOV_EXCL_START */ +int notification_ipc_event_monitor_init(void) +{ + WARN("event monitor init"); + return _dbus_event_handler_signal_init(); } /* LCOV_EXCL_STOP */