From 8a567079ea0677de5c4da1666ec8b5ad86a3bce7 Mon Sep 17 00:00:00 2001 From: "wn.jang" Date: Thu, 9 Jan 2020 19:19:47 +0900 Subject: [PATCH] Delete ecore timer when quit ecore main loop Change-Id: I6c98681015d6867d1adef64609b9e0cde34b5b9b --- server/ttsd_server.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/server/ttsd_server.c b/server/ttsd_server.c index d74a589..2687119 100644 --- a/server/ttsd_server.c +++ b/server/ttsd_server.c @@ -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; -- 2.7.4