From 17cd2958ecce0cd49c9916ce244892746529f8f1 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Wed, 14 Feb 2018 09:26:57 +0900 Subject: [PATCH 01/16] Fix coding style Change-Id: I6f89e11aa8252f2ebf7cf52aaeec1c758e44bc56 Signed-off-by: Jihoon Kim --- src/SttFeedback.cpp | 3 - src/SttManager.cpp | 304 +++++++++++++++++++++++------------------------ src/w-input-selector.cpp | 2 - 3 files changed, 149 insertions(+), 160 deletions(-) diff --git a/src/SttFeedback.cpp b/src/SttFeedback.cpp index ec7d91f..f6ae7da 100755 --- a/src/SttFeedback.cpp +++ b/src/SttFeedback.cpp @@ -172,8 +172,6 @@ void SttFeedback::SttProcessing(void) set_animation_state(&vd); } - - void SttFeedback::OnError(stt_error_e reason) { if(!owner) { @@ -189,7 +187,6 @@ void SttFeedback::OnError(stt_error_e reason) show_error_message(&vd, reason); } - void SttFeedback::SetVoiceData(void *data) { if(!data) { PRINTFUNC(DLOG_WARN, "no data"); diff --git a/src/SttManager.cpp b/src/SttManager.cpp index 3632923..69ebc14 100755 --- a/src/SttManager.cpp +++ b/src/SttManager.cpp @@ -36,16 +36,12 @@ static sound_stream_info_h g_stream_info_h = NULL; static inline const char *stt_state_str(stt_state_e cur) { if (cur == STT_STATE_CREATED) return (const char *) "STT_STATE_CREATED"; - else if (cur == STT_STATE_READY) return (const char *) "STT_STATE_READY"; - else if (cur == STT_STATE_RECORDING) return (const char *) "STT_STATE_RECORDING"; - else if (cur == STT_STATE_PROCESSING) return (const char *) "STT_STATE_PROCESSING"; - else return (const char *) "ABNORMAL CASE"; } @@ -66,7 +62,7 @@ SttManager::SttManager(ISttFeedback& feedback) */ int ret = stt_create(&handle); - if(ret != STT_ERROR_NONE) + if (ret != STT_ERROR_NONE) throw SttException(ret, ErrorString((stt_error_e)ret)); ret = sound_manager_create_stream_information(SOUND_STREAM_TYPE_VOICE_RECOGNITION, player_focus_state_cb, NULL, &g_stream_info_h); @@ -95,6 +91,7 @@ SttManager::~SttManager() { } catch(SttException &e) { PRINTFUNC(DLOG_ERROR, "reason : %s", e.what()); + stt_destroy(handle); } @@ -110,23 +107,23 @@ void SttManager::Prepare() { */ int ret = stt_prepare(handle); - if(ret != STT_ERROR_NONE) + if (ret != STT_ERROR_NONE) throw SttException(ret, ErrorString((stt_error_e)ret)); } void SttManager::UnPrepare() { - /** - * UnPrepare stt service. - * - */ - int ret = stt_unprepare(handle); - - if (ret != STT_ERROR_NONE) - throw SttException(ret, ErrorString((stt_error_e)ret)); + /** + * UnPrepare stt service. + * + */ + int ret = stt_unprepare(handle); + + if (ret != STT_ERROR_NONE) + throw SttException(ret, ErrorString((stt_error_e)ret)); } void SttManager::Start() { - if(!Validate((int) READY)) { + if (!Validate((int) READY)) { throw SttException((int) STT_ERROR_INVALID_STATE, "INVALID STATE - !STT_STATE_READY"); } @@ -148,12 +145,12 @@ void SttManager::Start() { ret = stt_start(handle, language.c_str(), asrtype.c_str()); - if(ret != STT_ERROR_NONE) + if (ret != STT_ERROR_NONE) throw SttException(ret, ErrorString((stt_error_e)ret)); } void SttManager::Stop() { - if(!Validate((int) RECORDING)) { + if (!Validate((int) RECORDING)) { throw SttException((int) STT_ERROR_INVALID_STATE, "INVALID STATE - !STT_STATE_RECORDING"); } @@ -163,17 +160,17 @@ void SttManager::Stop() { */ int ret = stt_stop(handle); - if(ret != STT_ERROR_NONE) + if (ret != STT_ERROR_NONE) throw SttException(ret, ErrorString((stt_error_e)ret)); } void SttManager::Cancel() { - if(iscancelled) { + if (iscancelled) { PRINTFUNC(DLOG_WARN, "iscancelled (%d)", iscancelled); return; } - if(!Validate((int) (RECORDING|PROCESSING))) { + if (!Validate((int) (RECORDING|PROCESSING))) { throw SttException((int) STT_ERROR_INVALID_STATE, "INVALID STATE - !(STT_STATE_RECORDING or STT_STATE_PROCESSING)"); } @@ -183,7 +180,7 @@ void SttManager::Cancel() { */ int ret = stt_cancel(handle); - if(ret != STT_ERROR_NONE) + if (ret != STT_ERROR_NONE) throw SttException(ret, ErrorString((stt_error_e)ret)); iscancelled = true; @@ -192,7 +189,6 @@ void SttManager::Cancel() { ifeedback.SttIdle(); } - bool SttManager::Validate(int state) { stt_state_e cur; @@ -209,19 +205,19 @@ bool SttManager::Validate(int state) { cur == STT_STATE_PROCESSING ? "STT_STATE_PROCESSING" : "ABNORMAL"); switch(cur) { - case STT_STATE_CREATED : + case STT_STATE_CREATED: if (state & CREATE) return true; break; - case STT_STATE_READY : + case STT_STATE_READY: if (state & READY) return true; break; - case STT_STATE_RECORDING : + case STT_STATE_RECORDING: if (state & RECORDING) return true; break; - case STT_STATE_PROCESSING : + case STT_STATE_PROCESSING: if (state & PROCESSING) return true; break; - default : + default: break; } @@ -237,16 +233,16 @@ void SttManager::PrintResultState(stt_result_event_e result_type) std::string result; switch (result_type) { - case STT_RESULT_EVENT_FINAL_RESULT : + case STT_RESULT_EVENT_FINAL_RESULT: result = "STT_RESULT_EVENT_FINAL_RESULT"; break; - case STT_RESULT_EVENT_PARTIAL_RESULT : + case STT_RESULT_EVENT_PARTIAL_RESULT: result = "STT_RESULT_EVENT_PARTIAL_RESULT"; break; - case STT_RESULT_EVENT_ERROR : + case STT_RESULT_EVENT_ERROR: result = "STT_RESULT_EVENT_ERROR"; break; - default : + default: result = "UNKNOWN"; break; } @@ -254,35 +250,35 @@ void SttManager::PrintResultState(stt_result_event_e result_type) } void SttManager::on_result( - stt_h handle, - stt_result_event_e event, - const char** data, - int size, - const char* msg, - void *user_data) { - PrintResultState(event); - - if (!user_data) { + stt_h handle, + stt_result_event_e event, + const char** data, + int size, + const char* msg, + void *user_data) { + PrintResultState(event); + + if (!user_data) { PRINTFUNC(DLOG_ERROR, "user_data null"); throw SttException((int)STT_ERROR_INVALID_PARAMETER, "invalid self reference"); - } + } - SttManager& manager = *((SttManager *) user_data); + SttManager& manager = *((SttManager *) user_data); - std::vector results; + std::vector results; - PRINTFUNC(DLOG_INFO, "result size : %d, msg : %s", size, msg); + PRINTFUNC(DLOG_INFO, "result size : %d, msg : %s", size, msg); - for (size_t i = 0; i < (size_t) size; i++) { - if (data[i]) { - results.push_back(std::string(data[i])); - } + for (size_t i = 0; i < (size_t) size; i++) { + if (data[i]) { + results.push_back(std::string(data[i])); + } - if (msg) - manager.ifeedback.OnResult(manager.asrtype, event, results, std::string(msg)); - else - manager.ifeedback.OnResult(manager.asrtype, event, results, std::string("")); - } + if (msg) + manager.ifeedback.OnResult(manager.asrtype, event, results, std::string(msg)); + else + manager.ifeedback.OnResult(manager.asrtype, event, results, std::string("")); + } } void SttManager::PrintState(stt_state_e previous, stt_state_e current) @@ -374,46 +370,46 @@ void SttManager::PrintErrorState(stt_error_e reason) std::string res; switch (reason) { - case STT_ERROR_OUT_OF_MEMORY : + case STT_ERROR_OUT_OF_MEMORY: res = "STT_ERROR_OUT_OF_MEMORY"; break; - case STT_ERROR_IO_ERROR : + case STT_ERROR_IO_ERROR: res = "STT_ERROR_IO_ERROR"; break; - case STT_ERROR_INVALID_PARAMETER : + case STT_ERROR_INVALID_PARAMETER: res = "STT_ERROR_INVALID_PARAMETER"; break; - case STT_ERROR_TIMED_OUT : + case STT_ERROR_TIMED_OUT: res = "STT_ERROR_TIMED_OUT"; break; - case STT_ERROR_RECORDER_BUSY : + case STT_ERROR_RECORDER_BUSY: res = "STT_ERROR_RECORDER_BUSY"; break; - case STT_ERROR_OUT_OF_NETWORK : + case STT_ERROR_OUT_OF_NETWORK: res = "STT_ERROR_OUT_OF_NETWORK"; break; - case STT_ERROR_PERMISSION_DENIED : + case STT_ERROR_PERMISSION_DENIED: res = "STT_ERROR_PERMISSION_DENIED"; break; - case STT_ERROR_NOT_SUPPORTED : + case STT_ERROR_NOT_SUPPORTED: res = "STT_ERROR_NOT_SUPPORTED"; break; - case STT_ERROR_INVALID_STATE : + case STT_ERROR_INVALID_STATE: res = "STT_ERROR_INVALID_STATE"; break; - case STT_ERROR_INVALID_LANGUAGE : + case STT_ERROR_INVALID_LANGUAGE: res = "STT_ERROR_INVALID_LANGUAGE"; break; - case STT_ERROR_ENGINE_NOT_FOUND : + case STT_ERROR_ENGINE_NOT_FOUND: res = "STT_ERROR_ENGINE_NOT_FOUND"; break; - case STT_ERROR_OPERATION_FAILED : + case STT_ERROR_OPERATION_FAILED: res = "STT_ERROR_OPERATION_FAILED"; break; - case STT_ERROR_NOT_SUPPORTED_FEATURE : + case STT_ERROR_NOT_SUPPORTED_FEATURE: res = "STT_ERROR_NOT_SUPPORTED_FEATURE"; break; - default : + default: res = "UNKNOWN ERROR REASON"; break; } @@ -421,117 +417,115 @@ void SttManager::PrintErrorState(stt_error_e reason) } void SttManager::on_error( - stt_h handle, - stt_error_e reason, - void *user_data) { - PRINTFUNC(DLOG_INFO, "stt-daemon error (%d)", reason); + stt_h handle, + stt_error_e reason, + void *user_data) { + PRINTFUNC(DLOG_INFO, "stt-daemon error (%d)", reason); - if (!user_data) + if (!user_data) throw SttException((int)STT_ERROR_INVALID_PARAMETER, "invalid self reference"); - SttManager& manager = *((SttManager *) user_data); - manager.ifeedback.OnError(reason); + SttManager& manager = *((SttManager *) user_data); + manager.ifeedback.OnError(reason); } void SttManager::SetLanguage(std::string language) { - this->language = language; + this->language = language; } void SttManager::EnableFeedback(bool enabled) { - int ret = STT_ERROR_NONE; + int ret = STT_ERROR_NONE; - void *udata = static_cast(this); + void *udata = static_cast(this); - if (enabled) { - ret = stt_set_recognition_result_cb(handle, on_result, udata); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); + if (enabled) { + ret = stt_set_recognition_result_cb(handle, on_result, udata); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); - ret = stt_set_error_cb(handle, on_error, udata); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); + ret = stt_set_error_cb(handle, on_error, udata); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); - ret = stt_set_state_changed_cb(handle, on_state_changed, udata); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); - } else { - ret = stt_unset_error_cb(handle); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); + ret = stt_set_state_changed_cb(handle, on_state_changed, udata); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); + } else { + ret = stt_unset_error_cb(handle); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); - ret = stt_unset_state_changed_cb(handle); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); + ret = stt_unset_state_changed_cb(handle); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); - ret = stt_unset_recognition_result_cb(handle); - if (STT_ERROR_NONE != ret) - throw SttException(ret, ErrorString((stt_error_e)ret)); - } + ret = stt_unset_recognition_result_cb(handle); + if (STT_ERROR_NONE != ret) + throw SttException(ret, ErrorString((stt_error_e)ret)); + } } const char* SttManager::ErrorString(int ecode) { - const char *str = NULL; - - switch (ecode) { - case STT_ERROR_OUT_OF_MEMORY: - str = (const char *) "STT_ERROR_OUT_OF_MEMORY"; - break; - case STT_ERROR_IO_ERROR: - str = (const char *) "STT_ERROR_IO_ERROR"; - break; - case STT_ERROR_INVALID_PARAMETER: - str = (const char *) "STT_ERROR_INVALID_PARAMETER"; - break; - case STT_ERROR_TIMED_OUT: - str = (const char *) "STT_ERROR_TIMED_OUT"; - break; - case STT_ERROR_RECORDER_BUSY: - str = (const char *) "STT_ERROR_RECORDER_BUSY"; - break; - case STT_ERROR_OUT_OF_NETWORK: - str = (const char *) "STT_ERROR_OUT_OF_NETWORK"; - break; - case STT_ERROR_INVALID_STATE: - str = (const char *) " STT_ERROR_INVALID_STATE"; - break; - case STT_ERROR_INVALID_LANGUAGE: - str = (const char *) "STT_ERROR_INVALID_LANGUAGE"; - break; - case STT_ERROR_ENGINE_NOT_FOUND: - str = (const char *) "STT_ERROR_ENGINE_NOT_FOUND"; - break; - case STT_ERROR_OPERATION_FAILED: - str = (const char *) "STT_ERROR_OPERATION_FAILED"; - break; - case STT_ERROR_NOT_SUPPORTED_FEATURE: - str = (const char *) "STT_ERROR_NOT_SUPPORTED_FEATURE"; - break; - } - return str; + const char *str = NULL; + + switch (ecode) { + case STT_ERROR_OUT_OF_MEMORY: + str = (const char *) "STT_ERROR_OUT_OF_MEMORY"; + break; + case STT_ERROR_IO_ERROR: + str = (const char *) "STT_ERROR_IO_ERROR"; + break; + case STT_ERROR_INVALID_PARAMETER: + str = (const char *) "STT_ERROR_INVALID_PARAMETER"; + break; + case STT_ERROR_TIMED_OUT: + str = (const char *) "STT_ERROR_TIMED_OUT"; + break; + case STT_ERROR_RECORDER_BUSY: + str = (const char *) "STT_ERROR_RECORDER_BUSY"; + break; + case STT_ERROR_OUT_OF_NETWORK: + str = (const char *) "STT_ERROR_OUT_OF_NETWORK"; + break; + case STT_ERROR_INVALID_STATE: + str = (const char *) " STT_ERROR_INVALID_STATE"; + break; + case STT_ERROR_INVALID_LANGUAGE: + str = (const char *) "STT_ERROR_INVALID_LANGUAGE"; + break; + case STT_ERROR_ENGINE_NOT_FOUND: + str = (const char *) "STT_ERROR_ENGINE_NOT_FOUND"; + break; + case STT_ERROR_OPERATION_FAILED: + str = (const char *) "STT_ERROR_OPERATION_FAILED"; + break; + case STT_ERROR_NOT_SUPPORTED_FEATURE: + str = (const char *) "STT_ERROR_NOT_SUPPORTED_FEATURE"; + break; + } + return str; } void SttManager::SoundFeedback() { - int is_sound = 0; - int is_sound_vibe = 0; - - if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &is_sound)) { - PRINTFUNC(DLOG_ERROR, "get sound status failed."); - } - - if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &is_sound_vibe)) { - PRINTFUNC(DLOG_ERROR, "get vibe status failed."); - } - - if (is_sound || is_sound_vibe) { - stt_set_start_sound(handle, "/usr/share/ise-voice-input/audio/voice_start.wav"); - stt_set_stop_sound(handle, "/usr/share/ise-voice-input/audio/voice_stop.wav"); - } else { - stt_unset_start_sound(handle); - stt_unset_stop_sound(handle); - } -} + int is_sound = 0; + int is_sound_vibe = 0; + + if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &is_sound)) { + PRINTFUNC(DLOG_ERROR, "get sound status failed."); + } + if (vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &is_sound_vibe)) { + PRINTFUNC(DLOG_ERROR, "get vibe status failed."); + } + if (is_sound || is_sound_vibe) { + stt_set_start_sound(handle, "/usr/share/ise-voice-input/audio/voice_start.wav"); + stt_set_stop_sound(handle, "/usr/share/ise-voice-input/audio/voice_stop.wav"); + } else { + stt_unset_start_sound(handle); + stt_unset_stop_sound(handle); + } +} void SttManager::EnableSilenceDetection(bool enabled) { stt_option_silence_detection_e s_option; diff --git a/src/w-input-selector.cpp b/src/w-input-selector.cpp index f729ed0..808891e 100755 --- a/src/w-input-selector.cpp +++ b/src/w-input-selector.cpp @@ -156,7 +156,6 @@ void init_customizing_theme(void) elm_theme_extension_add(NULL, app_edj_path.c_str()); } - static Eina_Bool back_cb(void *data, Elm_Object_Item *it) { reply_to_sender_by_callback_for_back(); @@ -1437,7 +1436,6 @@ ACTIVATE : free(context); } - void _app_pause(void* user_data) { PRINTFUNC(DLOG_DEBUG, ""); -- 2.7.4 From ee0ffae208b5ce4a1cd03b9f01c1037870c5b70d Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Wed, 14 Feb 2018 16:41:38 +0900 Subject: [PATCH 02/16] Add null point check to avoid crash issue Change-Id: Id993030b052c838a5483e2aefef824312f560adb Signed-off-by: Jihoon Kim --- src/w-input-stt-voice.cpp | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/w-input-stt-voice.cpp b/src/w-input-stt-voice.cpp index c784536..a7e9754 100755 --- a/src/w-input-stt-voice.cpp +++ b/src/w-input-stt-voice.cpp @@ -329,12 +329,15 @@ static Eina_Bool _update_textblock_timer_cb(void *data) if (h > 3900){ // to avoid Textblock size overflow (limit : 4000x4000) PRINTFUNC(DLOG_ERROR, "Stop STT to avoid text block overflow"); - if(voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING || voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) { - PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n"); - try{ - voicedata->sttmanager->Cancel(); - }catch(is::stt::SttException &e){ - PRINTFUNC(DLOG_ERROR, "reason : %s", e.what()); + if (voicedata->sttmanager) { + if (voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING || + voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) { + PRINTFUNC(DLOG_DEBUG, "STT_STATE_RECORDING or STT_STATE_PROCESSING\n"); + try{ + voicedata->sttmanager->Cancel(); + }catch(is::stt::SttException &e){ + PRINTFUNC(DLOG_ERROR, "reason : %s", e.what()); + } } } } @@ -541,14 +544,15 @@ static Eina_Bool _idler_cb(void *data) is::ui::WInputSttMicEffect *ieffect = new is::ui::WInputSttMicEffect(); if (ieffect) { - ieffect->SetSttHandle(voicedata->sttmanager->GetSttHandle()); + if (voicedata->sttmanager) + ieffect->SetSttHandle(voicedata->sttmanager->GetSttHandle()); is::ui::MicEffector *effector = new is::ui::MicEffector(canvas, voicedata->layout_main, *ieffect); voicedata->ieffect = ieffect; voicedata->effector = effector; - ieffect->SetProgressBar(voicedata->progressbar); - ieffect->SetSttHandle(voicedata->sttmanager->GetSttHandle()); + if (voicedata->progressbar) + ieffect->SetProgressBar(voicedata->progressbar); } voicedata->mo->Update(); @@ -767,7 +771,8 @@ static Eina_Bool _start_timer_cb(void* data) try { voicedata->state = STT_STATE_VAL_PREPARE_LISTENING; - voicedata->sttmanager->Start(); + if (voicedata->sttmanager) + voicedata->sttmanager->Start(); } catch (is::stt::SttException &e) { PRINTFUNC(DLOG_ERROR, "%s", e.what()); @@ -856,7 +861,7 @@ void on_initial_anim_press_cb(void *data, Evas_Object *obj, const char *emission PRINTFUNC(NO_PRINT, ""); VoiceData *vd = (VoiceData *)data; - if (vd == NULL) + if (vd == NULL || vd->sttmanager == NULL) return; int tempVal = vd->sttmanager->GetCurrent(); @@ -1407,7 +1412,8 @@ void _stt_lang_changed_cb(keynode_t *key, void* data) VoiceData *vd = (VoiceData *) data; get_stt_default_language(vd); - vd->sttmanager->SetLanguage(std::string(vd->kbd_lang)); + if (vd->sttmanager) + vd->sttmanager->SetLanguage(std::string(vd->kbd_lang)); vd->mo->Update(); return; @@ -1564,11 +1570,13 @@ static void _stt_entry_clicked_cb(void *data, Evas_Object * obj, void *event_inf if (str && strlen(str) > 0) { try { - if (voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING || - voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) { - voicedata->sttmanager->Cancel(); - PRINTFUNC(DLOG_DEBUG, "stt entry clicked callback during STT recording and processing"); - //return; + if (voicedata->sttmanager) { + if (voicedata->sttmanager->GetCurrent() == STT_STATE_RECORDING || + voicedata->sttmanager->GetCurrent() == STT_STATE_PROCESSING) { + voicedata->sttmanager->Cancel(); + PRINTFUNC(DLOG_DEBUG, "stt entry clicked callback during STT recording and processing"); + //return; + } } } catch(is::stt::SttException &e) { -- 2.7.4 From 7980d7f3da79d68f074074093998eda45a222a39 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 22 Feb 2018 09:28:15 +0900 Subject: [PATCH 03/16] Update package version to 0.1.180222 Change-Id: I22957867cbf8017543485fdf689ef7fe29bd0851 Signed-off-by: Jihoon Kim --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index a38791c..786dcdf 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index c77a6d9..d9b0caf 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180111 +Version: 0.1.180222 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From 4d25186bced9d3be7177466661cf257b764e8145 Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Thu, 22 Feb 2018 16:47:13 +0900 Subject: [PATCH 04/16] Change option for mime type from mandatory to optional Change-Id: I671246454daf475b611c1c19064f7838f0540f8d Signed-off-by: sungwook79.park --- org.tizen.inputdelegator.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index 786dcdf..e20877c 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -7,6 +7,9 @@ + + + -- 2.7.4 From 55bd07e5098268c728ac98883696c318c08bcfe2 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Fri, 23 Feb 2018 19:33:23 +0900 Subject: [PATCH 05/16] Update package version to 0.1.180223 Change-Id: I2d9d72906a5283b25ce05a29e73879b62494585c Signed-off-by: Jihoon Kim --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index e20877c..b825823 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index d9b0caf..e57288f 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180222 +Version: 0.1.180223 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From 442f9e62bee5804767757cc24cb97adc4ba8033c Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Fri, 9 Mar 2018 14:38:55 +0900 Subject: [PATCH 06/16] Fix the issue that have not callback protocol with sketch when inputdelegator starts with mime type and back key are pressed Change-Id: I09fee8b223d3ef27c5e139f710fdcef98b0d99ef Signed-off-by: sungwook79.park --- src/w-input-selector.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/w-input-selector.cpp b/src/w-input-selector.cpp index 808891e..5c990a2 100755 --- a/src/w-input-selector.cpp +++ b/src/w-input-selector.cpp @@ -43,6 +43,8 @@ InputKeyboardData g_input_keyboard_data; InputTypeData g_input_type_data; InputTemplateData g_input_template_data; +static bool g_set_mimetype_in_app_service = false; +static bool g_set_mimetype_in_app_resume = false; static Elm_Object_Item *it_empty; static Elm_Object_Item *it_title; @@ -1343,6 +1345,8 @@ void _app_service(app_control_h service, void* user_data) g_input_template_data.input_template_array = user_template_array; g_input_template_data.input_template_array_len = user_template_array_len; + g_set_mimetype_in_app_service = false; + ret = app_control_get_mime(service, &mime_type); if (ret != APP_CONTROL_ERROR_NONE) { LOGD("Fail to get mime type : %d", ret); @@ -1352,6 +1356,7 @@ void _app_service(app_control_h service, void* user_data) if (!strncmp(mime_type, "image/", strlen("image/"))) { app_data->mime_type = MIME_TYPE_IMAGE; app_data->app_type = APP_TYPE_DRAWING; + g_set_mimetype_in_app_service = true; launch_drawing_app((void *)app_data); if (mime_type) free(mime_type); @@ -1359,6 +1364,7 @@ void _app_service(app_control_h service, void* user_data) } else if (!strncmp(mime_type, "audio/", strlen("audio/"))) { app_data->mime_type = MIME_TYPE_AUDIO; app_data->app_type = APP_TYPE_STT; + g_set_mimetype_in_app_service = true; _stt_clicked_cb((void *)app_data, NULL, NULL); if (mime_type) free(mime_type); @@ -1446,6 +1452,16 @@ void _app_resume(void* user_data) { PRINTFUNC(DLOG_DEBUG, ""); resume_voice(); + + if (g_set_mimetype_in_app_resume) { + app_control_destroy(app_data->source_app_control); + app_data->source_app_control = NULL; + ui_app_exit(); + } + + if (g_set_mimetype_in_app_service) { + g_set_mimetype_in_app_resume = true; + } } void _app_terminate(void* user_data) -- 2.7.4 From d1510d6258ea59f07538ab447667d57ec0665d5f Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Mon, 12 Mar 2018 10:28:59 +0900 Subject: [PATCH 07/16] Update package version to 0.1.180312 Change-Id: I5312d95c0cf289bbf4f53d4a80f9d0a2294c486c Signed-off-by: sungwook79.park --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index b825823..ffd6cb2 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index e57288f..ced9fbd 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180223 +Version: 0.1.180312 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From 9dca83ec8129c5bb0ea8e0938eb84715da48c3dd Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Tue, 13 Mar 2018 16:13:37 +0900 Subject: [PATCH 08/16] Fix issue detected by static analysis tool Change-Id: I0d5c5bb7a2734b46774d1705338b63850c33c124 Signed-off-by: sungwook79.park --- src/voice-recorder.cpp | 1 + src/w-input-keyboard.cpp | 1 + src/w-input-selector.cpp | 4 +++- src/w-input-stt-voice.cpp | 3 +++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/voice-recorder.cpp b/src/voice-recorder.cpp index 23139df..3aab708 100644 --- a/src/voice-recorder.cpp +++ b/src/voice-recorder.cpp @@ -161,6 +161,7 @@ static void _recorder_start(voice_recorder *recorder) snprintf(recorder->file_path, PATH_MAX, "%s/%s", voice_content_path, filename); LOGD("recorder->file_path = %s", recorder->file_path); _recorder_apply_settings(recorder); + free(voice_content_path); recorder_prepare(recorder->recorder); recorder_start(recorder->recorder); } diff --git a/src/w-input-keyboard.cpp b/src/w-input-keyboard.cpp index 4e80c6c..774fe4c 100755 --- a/src/w-input-keyboard.cpp +++ b/src/w-input-keyboard.cpp @@ -111,6 +111,7 @@ void exit_keyboard() set_source_caller_app_id(app_control); free(app_id); reply_to_sender_by_callback(getText, "keyboard", NULL, cursorPosition); + app_control_destroy(app_control); ui_app_exit(); } diff --git a/src/w-input-selector.cpp b/src/w-input-selector.cpp index 5c990a2..237e4c4 100755 --- a/src/w-input-selector.cpp +++ b/src/w-input-selector.cpp @@ -1031,8 +1031,10 @@ unsigned int _update_smartreply_items(void *user_data) app_data); item_size++; - if (item_size >= 3) + free(reply); + if (item_size >= 3) { break; + } } elm_genlist_item_class_free(itc); } diff --git a/src/w-input-stt-voice.cpp b/src/w-input-stt-voice.cpp index a7e9754..2aac43a 100755 --- a/src/w-input-stt-voice.cpp +++ b/src/w-input-stt-voice.cpp @@ -1600,6 +1600,9 @@ static void _stt_entry_clicked_cb(void *data, Evas_Object * obj, void *event_inf elm_naviframe_item_pop_cb_set(navi_it, __stt_entry_detailed_view_pop_cb, (void *)voicedata); elm_naviframe_item_title_enabled_set(navi_it, EINA_FALSE, EINA_FALSE); free(str); + } else { + if (str) free(str); + str = NULL; } return; -- 2.7.4 From 66437a81ffd0b7e933ca4414fe97e9bfe065be5b Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Thu, 15 Mar 2018 19:41:58 +0900 Subject: [PATCH 09/16] Remove flag when excute with audio mime type Change-Id: I9baf1033291d9b328d6bb628d75d771d1d86e0a1 Signed-off-by: sungwook79.park --- src/w-input-selector.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/w-input-selector.cpp b/src/w-input-selector.cpp index 237e4c4..4b77b7a 100755 --- a/src/w-input-selector.cpp +++ b/src/w-input-selector.cpp @@ -1366,7 +1366,6 @@ void _app_service(app_control_h service, void* user_data) } else if (!strncmp(mime_type, "audio/", strlen("audio/"))) { app_data->mime_type = MIME_TYPE_AUDIO; app_data->app_type = APP_TYPE_STT; - g_set_mimetype_in_app_service = true; _stt_clicked_cb((void *)app_data, NULL, NULL); if (mime_type) free(mime_type); -- 2.7.4 From 62d92cb859d6aae2f04039296f8f0e3417ab68c6 Mon Sep 17 00:00:00 2001 From: "sungwook79.park" Date: Thu, 29 Mar 2018 10:57:44 +0900 Subject: [PATCH 10/16] Update package version to 0.1.180329 Change-Id: I1faa71855dc55270a103a5eace8c767cd59ef047 Signed-off-by: sungwook79.park --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index ffd6cb2..3b420df 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index ced9fbd..4d2c971 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180312 +Version: 0.1.180329 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From 68560991cffc25a11f7b1efa2e4491e55d0e18aa Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 2 Apr 2018 19:01:39 +0900 Subject: [PATCH 11/16] Fix defects detected by static analysis tool Change-Id: Ia800fe14ca76dd427e3cd64d77b224c23d613ad4 Signed-off-by: Jihoon Kim --- src/w-input-stt-voice.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/w-input-stt-voice.cpp b/src/w-input-stt-voice.cpp index 2aac43a..815ef56 100755 --- a/src/w-input-stt-voice.cpp +++ b/src/w-input-stt-voice.cpp @@ -566,7 +566,10 @@ static Eina_Bool _power_delayed_unlock(void *data){ PRINTFUNC(DLOG_DEBUG, "POWER Unlock"); VoiceData *voicedata = (VoiceData *) data; - device_power_release_lock(POWER_LOCK_DISPLAY); + int ret = device_power_release_lock(POWER_LOCK_DISPLAY); + if (ret != DEVICE_ERROR_NONE) + LOGW("Failed to release power(Display) (%d)", ret); + voicedata->power_unlock_timer = NULL; return ECORE_CALLBACK_CANCEL; @@ -575,7 +578,9 @@ static Eina_Bool _power_delayed_unlock(void *data){ void powerUnlock() { PRINTFUNC(DLOG_DEBUG, "POWER Unlock directly."); - device_power_release_lock(POWER_LOCK_DISPLAY); + int ret = device_power_release_lock(POWER_LOCK_DISPLAY); + if (ret != DEVICE_ERROR_NONE) + LOGW("Failed to release power(Display) (%d)", ret); } void powerLock(void *data, bool enable) -- 2.7.4 From 305b4291ef028a5994fedbcd2ee6beb17bb47458 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 2 Apr 2018 19:02:27 +0900 Subject: [PATCH 12/16] Update package version to 0.1.180402 Change-Id: I1eb4f8439835da62ec96197e344fd1b83d168042 Signed-off-by: Jihoon Kim --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index 3b420df..2161bae 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index 4d2c971..5b42d88 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180329 +Version: 0.1.180402 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From e6996e35f31ac12647dc9987dad29d11782732c2 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 9 Apr 2018 18:50:55 +0900 Subject: [PATCH 13/16] Fix memory leak issue Change-Id: I4edfd884552be40ddd3be851a2c20ed450c811e4 Signed-off-by: Jihoon Kim --- src/w-input-selector.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/w-input-selector.cpp b/src/w-input-selector.cpp index 4b77b7a..f9c1243 100755 --- a/src/w-input-selector.cpp +++ b/src/w-input-selector.cpp @@ -1019,8 +1019,10 @@ unsigned int _update_smartreply_items(void *user_data) } } - if (matched == true) + if (matched == true) { + free(reply); continue; + } elm_genlist_item_append(app_data->genlist, itc, -- 2.7.4 From 49495814c15e195ba55cc7e4869adcc5e3b2e7ae Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 9 Apr 2018 18:51:28 +0900 Subject: [PATCH 14/16] Update package version to 0.1.180409 Change-Id: I7a97064b839da96a1d00cf775d92bfabfab021dd Signed-off-by: Jihoon Kim --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index 2161bae..9499440 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index 5b42d88..6fc396f 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180402 +Version: 0.1.180409 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4 From 4311e93782aee869c6a5b5314b8e9722c0981c39 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 17 May 2018 15:32:21 +0900 Subject: [PATCH 15/16] Check error code in calling recorder API Change-Id: Ic9007ef9590f45e3a46b9bbab21a26bbe8acf9d8 Signed-off-by: Jihoon Kim --- src/voice-recorder.cpp | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/voice-recorder.cpp b/src/voice-recorder.cpp index 3aab708..841724d 100644 --- a/src/voice-recorder.cpp +++ b/src/voice-recorder.cpp @@ -182,15 +182,27 @@ static void _recorder_stop(voice_recorder *recorder) static void _recorder_apply_settings(voice_recorder *recorder) { + int error_code; if (recorder->recorder) { - recorder_attr_set_audio_channel(recorder->recorder, 2); + error_code = recorder_attr_set_audio_channel(recorder->recorder, 2); + if (error_code != RECORDER_ERROR_NONE) + LOGW("Failed to set audio channel. error code : %d", error_code); + recorder_attr_set_audio_device(recorder->recorder, RECORDER_AUDIO_DEVICE_MIC); - recorder_attr_set_time_limit(recorder->recorder, MAX_TIME); + error_code = recorder_attr_set_time_limit(recorder->recorder, MAX_TIME); + if (error_code != RECORDER_ERROR_NONE) + LOGW("Failed to set time limit. error code : %d", error_code); recorder_set_filename(recorder->recorder, recorder->file_path); - recorder_set_file_format(recorder->recorder, recorder->file_format); + error_code = recorder_set_file_format(recorder->recorder, recorder->file_format); + if (error_code != RECORDER_ERROR_NONE) + LOGW("Failed to set file format. error code : %d", error_code); + LOGD("file_format: %d", recorder->file_format); - recorder_set_audio_encoder(recorder->recorder, recorder->codec); + error_code = recorder_set_audio_encoder(recorder->recorder, recorder->codec); + if (error_code != RECORDER_ERROR_NONE) + LOGW("Failed to set audio encoder. error code : %d", error_code); + recorder_attr_set_audio_samplerate(recorder->recorder, recorder->sample_rate); recorder_attr_set_audio_encoder_bitrate(recorder->recorder, recorder->bitrate); @@ -251,9 +263,13 @@ static bool _main_file_register(const char *filename) static void _recorder_destroy(voice_recorder *recorder) { + int error_code; LOGD("_recorder_destroy"); if (recorder->recorder) { - recorder_cancel(recorder->recorder); + error_code = recorder_cancel(recorder->recorder); + if (error_code != RECORDER_ERROR_NONE) + LOGW("failed to cancel recorder. error : %d", error_code); + recorder_unprepare(recorder->recorder); recorder_destroy(recorder->recorder); recorder->recorder = NULL; -- 2.7.4 From 2f99795808a2dc7a6653b1e7f06fbd6320b32e46 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 17 May 2018 15:33:04 +0900 Subject: [PATCH 16/16] Update package version to 0.1.180517 Change-Id: I83460f1428fa036583ddf5f3d8e82546d7986971 Signed-off-by: Jihoon Kim --- org.tizen.inputdelegator.xml | 2 +- packaging/org.tizen.inputdelegator.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.tizen.inputdelegator.xml b/org.tizen.inputdelegator.xml index 9499440..ca20665 100755 --- a/org.tizen.inputdelegator.xml +++ b/org.tizen.inputdelegator.xml @@ -1,5 +1,5 @@ - + diff --git a/packaging/org.tizen.inputdelegator.spec b/packaging/org.tizen.inputdelegator.spec index 6fc396f..57c6bb4 100755 --- a/packaging/org.tizen.inputdelegator.spec +++ b/packaging/org.tizen.inputdelegator.spec @@ -9,7 +9,7 @@ Name: org.tizen.inputdelegator Summary: Input Delegator Application -Version: 0.1.180409 +Version: 0.1.180517 Release: 1 Group: Applications License: Apache-2.0 -- 2.7.4