jackdanielz pushed a commit to branch master.
commit 3fe22f3e4d8886ccacd933ebcaae5ddd8509c99f
Author: Aharon Hillel <[email protected]>
Date: Mon Jul 1 18:45:06 2013 +0300
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.
---
src/lib/elm_gesture_layer.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/src/lib/elm_gesture_layer.c b/src/lib/elm_gesture_layer.c
index 0ae0f18..ed21767 100644
--- a/src/lib/elm_gesture_layer.c
+++ b/src/lib/elm_gesture_layer.c
@@ -3719,16 +3719,7 @@ _elm_gesture_layer_smart_del(Eo *obj, void *_pd, va_list
*list EINA_UNUSED)
Pointer_Event *data;
int i;
- _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);
-
- /* 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])
{
@@ -3740,9 +3731,21 @@ _elm_gesture_layer_smart_del(Eo *obj, void *_pd, va_list
*list EINA_UNUSED)
_cbs_clean(sd, i, ELM_GESTURE_STATE_END);
_cbs_clean(sd, i, ELM_GESTURE_STATE_ABORT);
free(sd->gesture[i]);
+ sd->gesture[i] = NULL; /* Referenced by _event_history_clear */
}
if (sd->gest_taps_timeout) ecore_timer_del(sd->gest_taps_timeout);
+ /* 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);
+
+
eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
}
--
------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:
Build for Windows Store.
http://p.sf.net/sfu/windows-dev2dev