Delete ecore timer when quit ecore main loop 80/222080/1
authorwn.jang <wn.jang@samsung.com>
Thu, 9 Jan 2020 10:19:47 +0000 (19:19 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Thu, 9 Jan 2020 10:23:54 +0000 (10:23 +0000)
Change-Id: I6c98681015d6867d1adef64609b9e0cde34b5b9b

server/ttsd_server.c

index d74a589..2687119 100644 (file)
@@ -38,6 +38,7 @@ typedef struct {
 
 static Ecore_Timer* g_check_client_timer = NULL;
 static Ecore_Timer* g_wait_timer = NULL;
+static Ecore_Timer* g_terminate_timer = NULL;
 
 static utterance_t g_utt;
 
@@ -411,6 +412,7 @@ bool __terminate_client(int pid, int uid, app_tts_state_e state, void* user_data
 Eina_Bool ttsd_terminate_daemon(void *data)
 {
        ttsd_data_foreach_clients(__terminate_client, NULL);
+       g_terminate_timer = NULL;
        return EINA_FALSE;
 }
 
@@ -418,7 +420,11 @@ void __screen_reader_changed_cb(bool value)
 {
        if (TTSD_MODE_SCREEN_READER == ttsd_get_mode() && false == value) {
                SLOG(LOG_INFO, tts_tag(), "[Server] Screen reader is OFF. Start to terminate tts daemon");
-               ecore_timer_add(1, ttsd_terminate_daemon, NULL);
+               if (g_terminate_timer) {
+                       ecore_timer_del(g_terminate_timer);
+                       g_terminate_timer = NULL;
+               }
+               g_terminate_timer = ecore_timer_add(1, ttsd_terminate_daemon, NULL);
        } else {
                SLOG(LOG_DEBUG, tts_tag(), "[Server] Screen reader is %s", value ? "ON" : "OFF");
        }
@@ -505,11 +511,23 @@ int ttsd_finalize()
 
        ttsd_engine_agent_release();
 
+
+       if (g_wait_timer) {
+               ecore_timer_del(g_wait_timer);
+               g_wait_timer = NULL;
+               SLOG(LOG_INFO, tts_tag(), "[INFO] Delete ecore waiting timer handle");
+       }
+
+       if (g_terminate_timer) {
+               ecore_timer_del(g_terminate_timer);
+               g_terminate_timer = NULL;
+               SLOG(LOG_INFO, tts_tag(), "[INFO] Delete ecore terminating timer handle");
+       }
+
        if (NULL != g_check_client_timer) {
                ecore_timer_del(g_check_client_timer);
                g_check_client_timer = NULL;
-
-               SLOG(LOG_INFO, tts_tag(), "[INFO] Delete ecore timer handle");
+               SLOG(LOG_INFO, tts_tag(), "[INFO] Delete ecore checking client timer handle");
        }
 
        return TTSD_ERROR_NONE;