Fix crash issue on changing layout from voice layout to other layout 87/87787/3
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 9 Sep 2016 11:18:48 +0000 (20:18 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 9 Sep 2016 11:28:44 +0000 (20:28 +0900)
Change-Id: I87c111e8591fbf904c0db22b31d15988278a1e4c
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/include/ise-stt-mode.h
src/ise-stt-mode.cpp

index 330acbb..e7e7ba6 100644 (file)
@@ -107,6 +107,7 @@ struct _VoiceData
     Ecore_Timer *guide_text_timer;
     Ecore_Timer *btn_disabling_timer;
     Ecore_Timer *power_unlock_timer;
+    Ecore_Timer *init_timer;
 
     std::vector<std::string> stt_results;
     char *partial_result;
index 2adf0bd..227984c 100644 (file)
@@ -71,9 +71,9 @@ void voice_get_string(const char *keyValue, VoiceData *voicedata)
 
     LOGD("text : %s, voicedata->partial_result=%s", strbuf, voicedata->partial_result);
 
-    if (strbuf){
-        if (voicedata->partial_result){ // partial_result is not Null so replace
-            if (strcmp(voicedata->partial_result, strbuf)){
+    if (strbuf) {
+        if (voicedata->partial_result) { // partial_result is not Null so replace
+            if (strcmp(voicedata->partial_result, strbuf)) {
                 // different replace
                 LOGD("different replace");
 
@@ -131,7 +131,7 @@ static void set_guide_text(VoiceData *vd, const char* text, bool translatable)
     else
         elm_object_part_text_set(vd->layout_main, "elm.text", text);
 
-    if (!strcmp(text, SK_SPEAK_NOW)){
+    if (!strcmp(text, SK_SPEAK_NOW)) {
         if (vd->guide_text_timer == NULL)
             vd->guide_text_timer = ecore_timer_add(2.0, hide_guide_text, vd);
     }
@@ -167,7 +167,7 @@ void show_popup_toast(const char *text, bool check_img)
 
 static void _popup_close_cb(void *data, Evas_Object *obj, void *event_info)
 {
-    if (obj){
+    if (obj) {
         evas_object_hide(obj);
         evas_object_del(obj);
     }
@@ -496,7 +496,7 @@ int init_voice(Evas_Object *parent, const char *lang, VoiceData *r_voicedata)
     voicedata->voicefw_state = 0;
 
     /* Set Voice Language */
-    if (voicedata->kbd_lang){
+    if (voicedata->kbd_lang) {
         free(voicedata->kbd_lang);
         voicedata->kbd_lang = NULL;
     }
@@ -561,11 +561,13 @@ Evas_Object *create_fullview(Evas_Object *win, VoiceData *r_voicedata)
 
     voicedata->mic_button = m_mic_button;
 
-    if (voicedata->btn_disabling_timer == NULL){
+    if (voicedata->btn_disabling_timer == NULL) {
         voicedata->btn_disabling_timer = ecore_timer_add(2.0, _mic_button_enable_cb, voicedata);
     }
 
-    ecore_timer_add(0.6, _idler_cb, voicedata);
+    if (voicedata->init_timer == NULL) {
+        voicedata->init_timer = ecore_timer_add(0.6, _idler_cb, voicedata);
+    }
 
     // Progress Bar
     Evas_Object *progress_bar = create_progressbar(layout_main);
@@ -690,6 +692,11 @@ void on_destroy(VoiceData *r_voicedata)
             voicedata->power_unlock_timer = NULL;
         }
 
+        if (NULL != voicedata->init_timer) {
+            ecore_timer_del(voicedata->init_timer);
+            voicedata->init_timer = NULL;
+        }
+
         if (voicedata->kbd_lang) {
             free(voicedata->kbd_lang);
             voicedata->kbd_lang = NULL;