Delete ecore_timer before deinitialize 67/172067/1
authorWonnam Jang <wn.jang@samsung.com>
Wed, 6 Dec 2017 12:19:32 +0000 (21:19 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Fri, 9 Mar 2018 10:24:06 +0000 (10:24 +0000)
Change-Id: I9c544373fdddae3732b0222149c94163bfb00261
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
(cherry picked from commit 4d22ed36c44bf9c4f4df73d80c7b5f67679e10ab)

src/vc_elm_core.c

index c92e4456ff5d6d65f75958e1c833b57e99b12e32..49cbb0fb77ed3845554b049d1b65aca12bcf29f4 100644 (file)
@@ -73,6 +73,7 @@ static Eina_List *g_allowed_text_part_list = NULL;
 
 #define DEFAULT_CLICK_TIME 0.5
 float g_click_time = DEFAULT_CLICK_TIME;
+static Ecore_Timer *g_click_timer = NULL;
 
 #define HIDE 0xa
 #define X_VISIBILITY_TOLERANCE 32.0
@@ -236,13 +237,18 @@ static void __focused_cb(void *data, Evas_Object *obj, void *event_info)
        char* event = (char*)data;
 
        if (NULL != event) {
+               if (g_click_timer) {
+                       ecore_timer_del(g_click_timer);
+                       g_click_timer = NULL;
+               }
+
                if (!strcmp("focused", event)) {
                        evas_object_smart_callback_del(obj, "focused", __focused_cb);
                } else if (!strcmp("item,focused", event)) {
                        evas_object_smart_callback_del(obj, "item,focused", __focused_cb);
                }
 
-               ecore_timer_add(g_click_time, __click_event, NULL);
+               g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
        }
 }
 
@@ -251,6 +257,11 @@ static Eina_Bool _vc_elm_click_matched_object(const char* cmd, int click_method)
 
        VC_ELM_LOG_DBG("cmd(%s), click_method(%d)", cmd, click_method);
 
+       if (g_click_timer) {
+               ecore_timer_del(g_click_timer);
+               g_click_timer = NULL;
+       }
+
        Eina_List *dump_iter = NULL;
        void *data = NULL;
        Eina_Bool text_found = EINA_FALSE;
@@ -284,7 +295,7 @@ static Eina_Bool _vc_elm_click_matched_object(const char* cmd, int click_method)
                                                                        VC_ELM_LOG_DBG("Click event");
                                                                        if (EINA_TRUE == elm_object_focus_get((Evas_Object*)parent_info->address)) {
                                                                                VC_ELM_LOG_DBG("Already focused");
-                                                                               ecore_timer_add(g_click_time, __click_event, NULL);
+                                                                               g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
                                                                        } else {
                                                                                evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "focused", __focused_cb, "focused");
                                                                                elm_object_focus_set((Evas_Object*)(parent_info->address), EINA_TRUE);
@@ -322,7 +333,7 @@ static Eina_Bool _vc_elm_click_matched_object(const char* cmd, int click_method)
                                                                                        VC_ELM_LOG_DBG("Click event");
                                                                                        if (EINA_TRUE == elm_object_item_focus_get(item)) {
                                                                                                VC_ELM_LOG_DBG("Already focused");
-                                                                                               ecore_timer_add(g_click_time, __click_event, NULL);
+                                                                                               g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
                                                                                        } else {
                                                                                                evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "item,focused", __focused_cb, "item,focused");
                                                                                                elm_object_item_focus_set(item, EINA_TRUE);
@@ -356,6 +367,11 @@ static Eina_Bool _vc_elm_click_matched_object_vt_auto(const char* cmd, int click
        VC_ELM_LOG_DBG("inside _vc_elm_click_matched_object_vt_auto()");
        VC_ELM_LOG_DBG("cmd(%s), click_method(%d)", cmd, click_method);
 
+       if (g_click_timer) {
+               ecore_timer_del(g_click_timer);
+               g_click_timer = NULL;
+       }
+
        Eina_List *dump_iter = NULL;
        void *data = NULL;
        Eina_Bool text_found = EINA_FALSE;
@@ -386,7 +402,7 @@ static Eina_Bool _vc_elm_click_matched_object_vt_auto(const char* cmd, int click
                                                VC_ELM_LOG_DBG("Click event");
                                                if (EINA_TRUE == elm_object_focus_get((Evas_Object*)info->address)) {
                                                        VC_ELM_LOG_DBG("Already focused");
-                                                       ecore_timer_add(g_click_time, __click_event, NULL);
+                                                       g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
                                                } else {
                                                        evas_object_smart_callback_add((Evas_Object*)(info->address), "focused", __focused_cb, "focused");
                                                        elm_object_focus_set((Evas_Object*)(info->address), EINA_TRUE);
@@ -402,7 +418,7 @@ static Eina_Bool _vc_elm_click_matched_object_vt_auto(const char* cmd, int click
                                                                VC_ELM_LOG_DBG("Click event");
                                                                if (EINA_TRUE == elm_object_focus_get((Evas_Object*)parent_info->address)) {
                                                                        VC_ELM_LOG_DBG("Already focused");
-                                                                       ecore_timer_add(g_click_time, __click_event, NULL);
+                                                                       g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
                                                                } else {
                                                                        evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "focused", __focused_cb, "focused");
                                                                        elm_object_focus_set((Evas_Object*)(parent_info->address), EINA_TRUE);
@@ -439,7 +455,7 @@ static Eina_Bool _vc_elm_click_matched_object_vt_auto(const char* cmd, int click
                                                                                VC_ELM_LOG_DBG("Click event");
                                                                                if (EINA_TRUE == elm_object_item_focus_get(item)) {
                                                                                        VC_ELM_LOG_DBG("Already focused");
-                                                                                       ecore_timer_add(g_click_time, __click_event, NULL);
+                                                                                       g_click_timer = ecore_timer_add(g_click_time, __click_event, NULL);
                                                                                } else {
                                                                                        evas_object_smart_callback_add((Evas_Object*)(parent_info->address), "item,focused", __focused_cb, "item,focused");
                                                                                        elm_object_item_focus_set(item, EINA_TRUE);
@@ -614,6 +630,18 @@ void _vc_elm_core_init()
        VC_ELM_LOG_DBG("XML RETURNED %d", ret);
 }
 
+void _vc_elm_core_delete_timer()
+{
+       if (g_animation_view_idler) {
+               ecore_timer_del(g_animation_view_idler);
+               g_animation_view_idler = NULL;
+       }
+       if (g_click_timer) {
+               ecore_timer_del(g_click_timer);
+               g_click_timer = NULL;
+       }
+}
+
 void _vc_elm_core_fini()
 {
        if (NULL != g_allowed_text_part_list) {
@@ -645,6 +673,9 @@ void _vc_elm_core_fini()
                eina_hash_free(g_config_widget_map);
                g_config_widget_map = NULL;
        }
+
+       _vc_elm_core_delete_timer();
+
        _vc_elm_core_destroy_xml_data();
 
        if (NULL != g_dump_list) {