From 9a8965fb748a5f0364625c8210f668ab211f0f6e Mon Sep 17 00:00:00 2001 From: Aharon Hillel Date: Wed, 3 Jul 2013 17:42:21 +0300 Subject: [PATCH] Gesture Layer: cancel timer on delete. We need to cancel any running timers when GLayer is deleted. Conflicts: src/lib/elm_gesture_layer.c Change-Id: I8ec0f36aa8fc4e69f48776d84b77d6fe89187f0d --- src/lib/elm_gesture_layer.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/lib/elm_gesture_layer.c b/src/lib/elm_gesture_layer.c index ade33c0..3b62bdd 100644 --- a/src/lib/elm_gesture_layer.c +++ b/src/lib/elm_gesture_layer.c @@ -3746,6 +3746,18 @@ _elm_gesture_layer_smart_del(Evas_Object *obj) ELM_GESTURE_LAYER_DATA_GET(obj, sd); + /* Clear all gestures intermediate data, stop any timers */ + { + /* FIXME: +1 because of the mistake in the enum. */ + Gesture_Info **gitr = sd->gesture + 1; + Tests_Array_Funcs *fitr = _glayer_tests_array + 1; + for (; fitr->reset; fitr++, gitr++) + { + if (IS_TESTED_GESTURE(*gitr)) + fitr->reset(*gitr); + } + } + /* First Free all gestures internal data structures */ for (i = 0; i < ELM_GESTURE_LAST; i++) if (sd->gesture[i]) @@ -3891,6 +3903,10 @@ elm_gesture_layer_cb_set(Evas_Object *obj, ELM_GESTURE_LAYER_CHECK(obj); ELM_GESTURE_LAYER_DATA_GET(obj, sd); + /* Clear gesture intermediate data, stop any timers */ + if (IS_TESTED_GESTURE(sd->gesture[idx])) + _glayer_tests_array[idx].reset(sd->gesture[idx]); + if (!sd->gesture[idx]) sd->gesture[idx] = calloc(1, sizeof(Gesture_Info)); if (!sd->gesture[idx]) return; @@ -3904,7 +3920,6 @@ elm_gesture_layer_cb_set(Evas_Object *obj, SET_TEST_BIT(p); } - EAPI void elm_gesture_layer_line_min_length_set(Evas_Object *obj, int line_min_length) { -- 2.7.4