From b5dc617e8a63cf0b43f5e37bb761614fb0fdafaa Mon Sep 17 00:00:00 2001 From: Aharon Hillel Date: Mon, 1 Jul 2013 18:45:06 +0300 Subject: [PATCH] Gesture Layer: changed order in cleanup func. Changed the order when GLayer is deleted. First we cancel all Gestures, then we handle any event forwarding. Conflicts: src/lib/elm_gesture_layer.c Change-Id: I7ad6919550b9cd50a1c050bb0a845d2569d2d4c7 --- src/lib/elm_gesture_layer.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lib/elm_gesture_layer.c b/src/lib/elm_gesture_layer.c index d6a1741..ade33c0 100644 --- a/src/lib/elm_gesture_layer.c +++ b/src/lib/elm_gesture_layer.c @@ -3746,16 +3746,7 @@ _elm_gesture_layer_smart_del(Evas_Object *obj) ELM_GESTURE_LAYER_DATA_GET(obj, sd); - _event_history_clear(obj); - eina_list_free(sd->pending); - - EINA_LIST_FREE (sd->touched, data) - free(data); - - if (!elm_widget_disabled_get(obj)) - _callbacks_unregister(obj); - - /* Free all gestures internal data structures */ + /* First Free all gestures internal data structures */ for (i = 0; i < ELM_GESTURE_LAST; i++) if (sd->gesture[i]) { @@ -3763,6 +3754,7 @@ _elm_gesture_layer_smart_del(Evas_Object *obj) free(sd->gesture[i]->data); free(sd->gesture[i]); + sd->gesture[i] = NULL; /* Referenced by _event_history_clear */ } if (sd->gest_taps_timeout) { @@ -3770,6 +3762,16 @@ _elm_gesture_layer_smart_del(Evas_Object *obj) sd->gest_taps_timeout = NULL; } + /* Then take care of clearing events */ + _event_history_clear(obj); + sd->pending = eina_list_free(sd->pending); + + EINA_LIST_FREE(sd->touched, data) + free(data); + + if (!elm_widget_disabled_get(obj)) + _callbacks_unregister(obj); + _elm_gesture_layer_parent_sc->base.del(obj); /* handles freeing sd */ } @@ -3778,7 +3780,6 @@ _elm_gesture_layer_smart_set_user(Elm_Widget_Smart_Class *sc) { sc->base.add = _elm_gesture_layer_smart_add; sc->base.del = _elm_gesture_layer_smart_del; - sc->disable = _elm_gesture_layer_smart_disable; } -- 2.7.4