Fixed terminate issue for voice control engine 16/170916/5
authorsungrae jo <seongrae.jo@samsung.com>
Fri, 23 Feb 2018 07:25:29 +0000 (16:25 +0900)
committersungrae jo <seongrae.jo@samsung.com>
Thu, 8 Mar 2018 01:52:36 +0000 (10:52 +0900)
Change-Id: Ic751d9201a970c8ad9df2de5b2916c39f693b2c4
Signed-off-by: sungrae jo <seongrae.jo@samsung.com>
server/vcd_engine_agent.c
server/vcd_recorder.c
server/vcd_server.c
server/vcd_server.h

index 1f4c585..4b562b3 100644 (file)
@@ -120,7 +120,10 @@ int vcd_engine_agent_release()
        }
 
        /* unload current engine */
-       vcd_engine_agent_unload_current_engine();
+       if (0 != vcd_engine_agent_unload_current_engine()) {
+               SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Fail to deinitialize");
+               return VCD_ERROR_OPERATION_FAILED;
+       }
 
        /* release current engine data */
        if (NULL != g_dynamic_engine.callbacks) {
index f3194d4..eea8f50 100644 (file)
@@ -483,7 +483,9 @@ int vcd_recorder_destroy()
        if (0 != ret)
                SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to destroy stream info, ret(%d)", ret);
 
-       audio_in_destroy(g_audio_h);
+       ret = audio_in_destroy(g_audio_h);
+       if (0 != ret)
+               SLOG(LOG_ERROR, TAG_VCD, "[Recorder ERROR] Fail to audio in destroy, ret(%d)", ret);
 
 #ifdef TV_BT_MODE
        bt_hid_unset_audio_data_receive_cb();
index 58d6d7d..688e21d 100755 (executable)
@@ -1033,7 +1033,7 @@ int vcd_initialize(vce_request_callback_s *callback)
        return 0;
 }
 
-void vcd_finalize()
+bool vcd_finalize()
 {
        GList *iter = NULL;
        if (0 < g_list_length(g_proc_list)) {
@@ -1056,14 +1056,17 @@ void vcd_finalize()
                }
                vcd_engine_recognize_cancel();
        }
+
        if (0 != vcd_recorder_destroy()) {
                SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to destroy recorder");
+               return false;
        } else {
                SLOG(LOG_DEBUG, TAG_VCD, "[Server] destroy recorder");
        }
 
        if (0 != vcd_engine_agent_release()) {
                SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to release engine");
+               return false;
        } else {
                SLOG(LOG_DEBUG, TAG_VCD, "[Server] release engine");
        }
@@ -1075,14 +1078,18 @@ void vcd_finalize()
 
        SLOG(LOG_ERROR, TAG_VCD, "[Server] mode finalize");
 
-       return;
+       return true;
 }
 
 static Eina_Bool __finalize_quit_ecore_loop(void *data)
 {
-       SLOG(LOG_ERROR, TAG_VCD, "[Server] quit ecore main loop");
-       ecore_main_loop_quit();
-       return EINA_FALSE;
+       bool ret = vcd_finalize();
+       if (false == ret) {
+               return EINA_TRUE;
+       } else {
+               ecore_main_loop_quit();
+               return EINA_FALSE;
+       }
 }
 
 static void __read_proc()
@@ -1355,7 +1362,7 @@ int vcd_server_mgr_finalize(int pid)
 
        if (0 == vcd_client_get_ref_count()) {
                SLOG(LOG_DEBUG, TAG_VCD, "[Server] Connected client list is empty");
-               ecore_timer_add(0, __finalize_quit_ecore_loop, NULL);
+               ecore_timer_add(0.5, __finalize_quit_ecore_loop, NULL);
        }
 
        SLOG(LOG_ERROR, TAG_VCD, "[Server Success] Manager Finalize : pid(%d)", pid);
@@ -1956,7 +1963,7 @@ int vcd_server_finalize(int pid)
 
        if (0 == vcd_client_get_ref_count()) {
                SLOG(LOG_DEBUG, TAG_VCD, "[Server] Connected client list is empty");
-               ecore_timer_add(0, __finalize_quit_ecore_loop, NULL);
+               ecore_timer_add(0.5, __finalize_quit_ecore_loop, NULL);
        }
 
        SLOG(LOG_DEBUG, TAG_VCD, "[Server Success] Client Finalize : pid(%d)", pid);
@@ -2270,7 +2277,7 @@ int vcd_server_widget_finalize(int pid)
 
        if (0 == vcd_client_get_ref_count()) {
                SLOG(LOG_ERROR, TAG_VCD, "[Server] connected client list is empty");
-               ecore_timer_add(0, __finalize_quit_ecore_loop, NULL);
+               ecore_timer_add(0.5, __finalize_quit_ecore_loop, NULL);
                return 0;
        }
 
index b328a7e..6df0154 100644 (file)
@@ -32,7 +32,7 @@ extern "C" {
 */
 int vcd_initialize(vce_request_callback_s *callback);
 
-void vcd_finalize();
+bool vcd_finalize();
 
 Eina_Bool vcd_cleanup_client_all(void *data);