From: jiyong.min Date: Mon, 14 Mar 2022 01:20:34 +0000 (+0900) Subject: fix 'GSource *timer_src' memory leak and code refactoring for timer X-Git-Tag: submit/tizen_6.5/20220321.013725^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3d2519e91aa643a4da88297e1e75bb3cf550827e;p=platform%2Fcore%2Fapi%2Fmedia-controller.git fix 'GSource *timer_src' memory leak and code refactoring for timer Change-Id: I222811faca43a3a2b29327bb46b324eb49106887 --- diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index 2caf592..179bc20 100644 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 0.2.27 +Version: 0.2.28 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/svc/daemon/media_controller_main.c b/svc/daemon/media_controller_main.c index fabaacf..84d0b60 100644 --- a/svc/daemon/media_controller_main.c +++ b/svc/daemon/media_controller_main.c @@ -37,10 +37,11 @@ static gboolean __mc_main_check_connection(gpointer user_data) { int connection_cnt = 0; connection_cnt = mc_svc_get_connection_cnt(); + if ((connection_cnt == -1) || (connection_cnt > 0)) { mc_error("[No-error] Timer is Called but there is working Process, connection_cnt = %d", connection_cnt); - __mc_main_create_timer(); + return G_SOURCE_CONTINUE; } else { mc_error("[No-error] Timer is Called. Now Killing mediacontroller process"); g_mc_timer_id = 0; @@ -53,23 +54,20 @@ static gboolean __mc_main_check_connection(gpointer user_data) g_main_loop_quit(g_mc_mainloop); } - return FALSE; + return G_SOURCE_REMOVE; } -static void __mc_main_create_timer(void) +static void __mc_main_destroy_timer(void) { - if (g_mc_timer_id > 0) - g_source_destroy(g_main_context_find_source_by_id(g_main_context_get_thread_default(), g_mc_timer_id)); - - GSource *timer_src = g_timeout_source_new_seconds(MC_MAIN_TIMEOUT_SEC_60); - g_source_set_callback(timer_src, __mc_main_check_connection, NULL, NULL); - g_mc_timer_id = g_source_attach(timer_src, g_main_context_get_thread_default()); + if (g_source_remove(g_mc_timer_id)) + g_mc_timer_id = 0; } -static void __mc_main_destroy_timer(void) +static void __mc_main_create_timer(void) { - g_source_destroy(g_main_context_find_source_by_id(g_main_context_get_thread_default(), g_mc_timer_id)); - g_mc_timer_id = 0; + __mc_main_destroy_timer(); + + g_mc_timer_id = g_timeout_add_seconds(MC_MAIN_TIMEOUT_SEC_60, __mc_main_check_connection, NULL); } static int __mc_main_create_socket_activation(void)