Fix thread bug for error handling
[platform/core/uifw/stt.git] / server / sttd_engine_agent.c
index 81417d5..3bf7095 100644 (file)
@@ -1068,6 +1068,15 @@ int sttd_engine_agent_check_app_agreed(const char* appid, bool* result)
        return 0;
 }
 
+static void __recorder_destroy_by_error_result(void *data)
+{
+       SLOG(LOG_DEBUG, TAG_STTD, "[Engine Agent] Destroy recorder");
+       if (0 != sttd_recorder_destroy())
+               SECURE_SLOG(LOG_WARN, TAG_STTD, "[Engine Agent] Fail to destroy recorder");
+
+       return;
+}
+
 int sttd_engine_agent_send_result(stte_result_event_e event, const char* type, const char** result, int result_count,
                 const char* msg, void* time_info, void *user_data)
 {
@@ -1093,9 +1102,7 @@ int sttd_engine_agent_send_result(stte_result_event_e event, const char* type, c
 
 #ifdef AUDIO_CREATE_ON_START
        if (event == STTE_RESULT_EVENT_ERROR) {
-               SLOG(LOG_DEBUG, TAG_STTD, "[Engine Agent] Destroy recorder");
-               if (0 != sttd_recorder_destroy())
-                       SECURE_SLOG(LOG_WARN, TAG_STTD, "[Engine Agent] Fail to destroy recorder");
+               ecore_main_loop_thread_safe_call_async(__recorder_destroy_by_error_result, NULL);
        }
 #endif