Gesture Layer: cancel timer on delete.
authorAharon Hillel <a.hillel@samsung.com>
Wed, 3 Jul 2013 14:42:21 +0000 (17:42 +0300)
committerSungho Kwak <sungho1.kwak@samsung.com>
Mon, 8 Jul 2013 06:47:30 +0000 (15:47 +0900)
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

index ade33c0..3b62bdd 100644 (file)
@@ -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)
 {