fix 'GSource *timer_src' memory leak and code refactoring for timer 25/272325/2 accepted/tizen/6.5/unified/20220322.014707 submit/tizen_6.5/20220321.013725
authorjiyong.min <jiyong.min@samsung.com>
Mon, 14 Mar 2022 01:20:34 +0000 (10:20 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Tue, 15 Mar 2022 05:26:47 +0000 (14:26 +0900)
Change-Id: I222811faca43a3a2b29327bb46b324eb49106887

packaging/capi-media-controller.spec
svc/daemon/media_controller_main.c

index 2caf592b605a43bd789dc71c57f2a686e7603bd2..179bc200883358ccb92abbfd66606cdb3a69b7d1 100644 (file)
@@ -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
index fabaacfa4de9e3ecbd41cbd6c0f7ece848b72eec..84d0b60bfd73edc71051240e7b08b906c9c369ea 100644 (file)
@@ -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)