static bool g_is_paused;
+static bool g_is_terminated = false;
+
/* Function definitions */
static int __synthesis(unsigned int uid, const char* credential);
return true;
}
+static void __terminate_server()
+{
+ if (g_is_terminated) {
+ SLOG(LOG_INFO, tts_tag(), "[INFO] ttsd_terminate() is already invoked.");
+ return;
+ }
+
+ g_is_terminated = true;
+
+ ttsd_ipc_close_connection();
+ ttsd_network_finalize();
+ ttsd_finalize();
+}
+
+static Eina_Bool __quit_ecore_loop(void *data)
+{
+ __terminate_server();
+ ecore_main_loop_quit();
+
+ return EINA_FALSE;
+}
+
Eina_Bool ttsd_terminate_daemon(void *data)
{
ttsd_data_foreach_clients(__terminate_client, NULL);
+
+ if (g_quit_loop_timer) {
+ ecore_timer_del(g_quit_loop_timer);
+ g_quit_loop_timer = NULL;
+ SLOG(LOG_INFO, tts_tag(), "[INFO] Delete ecore quit loop timer handle");
+ }
+
+ __terminate_server();
+
g_terminate_timer = NULL;
return EINA_FALSE;
}
int ttsd_initialize(ttse_request_callback_s *callback)
{
SLOG(LOG_INFO, tts_tag(), "[Server] Initialize");
+ g_is_terminated = false;
if (ttsd_config_initialize(__config_changed_cb)) {
SLOG(LOG_ERROR, tts_tag(), "[Server WARNING] Fail to initialize config.");
return TTSD_ERROR_NONE;
}
-static Eina_Bool __quit_ecore_loop(void *data)
-{
- ttsd_ipc_close_connection();
- ttsd_network_finalize();
- ttsd_finalize();
- ecore_main_loop_quit();
-
- return EINA_FALSE;
-}
-
-
static void __read_proc()
{
DIR *dp = NULL;