X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=server%2Fsttd_server.c;h=5b4e0463755989e52be2e03fc026863dc70d590d;hb=e5c5a41fb4080d3a9ea3bbb92ee0b91312378b4a;hp=bbb6a52a7bc4db8fe76470716f09900d649a27b9;hpb=a0640209263d5040910591f9b496f824272bef01;p=platform%2Fcore%2Fuifw%2Fstt.git diff --git a/server/sttd_server.c b/server/sttd_server.c index bbb6a52..5b4e046 100755 --- a/server/sttd_server.c +++ b/server/sttd_server.c @@ -87,23 +87,23 @@ static void __cancel_recognition_internal() g_recording_timer = NULL; } + int ret = 0; int uid = 0; uid = stt_client_get_current_recognition(); - if (0 != uid) { - /* cancel engine recognition */ - int ret = sttd_engine_agent_recognize_cancel(); - if (0 != ret) { - SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to cancel : result(%d)", ret); - } + app_state_e state = 0; + ret = sttd_client_get_state(uid, &state); - /* change uid state */ - sttd_client_set_state(uid, APP_STATE_READY); - stt_client_unset_current_recognition(); + if (0 != ret) { + SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] uid is NOT valid "); + return; + } - ret = sttdc_send_set_state(uid, (int)APP_STATE_READY); + if (0 != uid && (APP_STATE_PROCESSING == state || APP_STATE_RECORDING == state)) { + /* cancel engine recognition */ + ret = sttd_server_cancel(uid); if (0 != ret) { - SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to send state change : result(%d)", ret); + SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to cancel : result(%d)", ret); } } else { SLOG(LOG_WARN, TAG_STTD, "[Server WARNING] uid is NOT valid"); @@ -269,6 +269,14 @@ int __server_recognition_result_callback(stte_result_event_e event, const char* } sttd_config_time_reset(); + int ret = 0; + if (APP_STATE_RECORDING == state) { + ret = sttd_engine_agent_recognize_cancel(); + if (0 != ret) { + SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to cancel: result(%d)", ret); + } + } + sttd_client_set_state(uid, APP_STATE_READY); stt_client_unset_current_recognition(); @@ -367,6 +375,7 @@ void __sttd_server_engine_changed_cb(const char* engine_id, const char* language SLOG(LOG_DEBUG, TAG_STTD, "[Server] New default engine : %s", engine_id); } +#if 0 /* need to change state of app to ready */ int uid; uid = stt_client_get_current_recognition(); @@ -394,6 +403,7 @@ void __sttd_server_engine_changed_cb(const char* engine_id, const char* language ret = sttd_engine_agent_set_silence_detection(support_silence); if (0 != ret) SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to Result(%d)", ret); +#endif return; } @@ -429,51 +439,10 @@ void __sttd_server_silence_changed_cb(bool value, void* user_data) /* * Daemon function */ - -static void __sig_handler(int signo) -{ - /* restore signal handler */ - signal(signo, SIG_DFL); - - /* Send error signal to clients */ - int* client_list = NULL; - int client_count = 0; - int i = 0; - if (0 != sttd_client_get_list(&client_list, &client_count)) { - if (NULL != client_list) { - free(client_list); - client_list = NULL; - } - } - - if (NULL != client_list) { - for (i = 0; i < client_count; i++) { - sttdc_send_error_signal(client_list[i], STTD_ERROR_SERVICE_RESET, "Service Reset"); - } - - free(client_list); - client_list = NULL; - } - - /* invoke signal again */ - raise(signo); -} - -static void __register_sig_handler() -{ - signal(SIGSEGV, __sig_handler); - signal(SIGABRT, __sig_handler); - signal(SIGTERM, __sig_handler); - signal(SIGINT, __sig_handler); - signal(SIGQUIT, __sig_handler); -} - int sttd_initialize(stte_request_callback_s *callback) { int ret = 0; - __register_sig_handler(); - if (0 != pthread_mutex_init(&stte_result_mutex, NULL)) { SLOG(LOG_ERROR, TAG_STTD, "[Server ERROR] Fail to initialize stte result mutex."); } @@ -682,6 +651,7 @@ static Eina_Bool __quit_ecore_loop(void *data) stt_network_finalize(); sttd_finalize(); + sttd_dbus_close_connection(); ecore_main_loop_quit(); SLOG(LOG_DEBUG, TAG_STTD, "");