e_service_gesture: Delete cleanup_timer when the last touched finger is up 27/308727/1 accepted/tizen/unified/20240401.165615 accepted/tizen/unified/x/20240402.012058
authorduna.oh <duna.oh@samsung.com>
Fri, 29 Mar 2024 06:49:49 +0000 (15:49 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 29 Mar 2024 08:08:02 +0000 (17:08 +0900)
< Normal scenario >
1st finger touch down - add cleanup_timer
2nd finger touch down
1st finger touch up - delete cleanup_timer
2nd finger touch up - pressed_fingers is zero and _gesture_cleanup() is called

< Issue scenario >
1st finger touch down - add cleanup_timer
2nd finger touch down
1st finger touch up - delete cleanup_timer
2nd finger touch up - pressed_fingers is not zero (somehow) -> clean_timer
                      is not triggered -> pressed_fingers is NOT set to zero

< TO-BE >
1st finger touch down - add cleanup_timer
2nd finger touch down
1st finger touch up
2nd finger touch up - pressed_fingers is not zero (somehow) -> cleanup_timer
                      will be triggered -> pressed_fingers is set to zero

Change-Id: Id43ef2529adb735fa19d1ca24212f7bfb71d5060

src/bin/services/e_service_gesture.c

index 30178b7..48c4aaf 100644 (file)
@@ -326,6 +326,12 @@ _gesture_touch_up(E_Policy_Gesture *gesture, Evas_Object *obj, int idx, int x, i
    if (gesture->pressed_fingers <= 0)
      {
         _gesture_cleanup(gesture);
+
+        if (e_config->gesture_service.use_cleanup_timer)
+          {
+              E_FREE_FUNC(gesture->cleanup_timer, ecore_timer_del);
+              gesture->cleanup_timer = NULL;
+          }
      }
 }
 
@@ -390,6 +396,15 @@ _gesture_touch_down(E_Policy_Gesture *gesture, Evas_Object *obj, int idx, Evas_C
 {
    int cx = 0, cy = 0;
 
+   if (gesture->pressed_fingers == 1)
+     {
+        if (e_config->gesture_service.use_cleanup_timer)
+          {
+             E_FREE_FUNC(gesture->cleanup_timer, ecore_timer_del);
+             gesture->cleanup_timer = ecore_timer_add(gesture->cleanup_time, _gesture_cleanup_timer, (void *)gesture);
+          }
+     }
+
    switch (gesture->status)
      {
         case POL_GESTURE_STATUS_READY:
@@ -456,11 +471,6 @@ _gesture_obj_cb_mouse_up(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj, v
 
    gesture->pressed_fingers--;
    _gesture_touch_up(gesture, obj, 0, ev->canvas.x, ev->canvas.y, ev->timestamp);
-
-   if (e_config->gesture_service.use_cleanup_timer)
-     {
-        E_FREE_FUNC(gesture->cleanup_timer, ecore_timer_del);
-     }
 }
 
 static void
@@ -484,12 +494,6 @@ _gesture_obj_cb_mouse_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj,
    gesture->pressed_fingers++;
 
    _gesture_touch_down(data, obj, 0, ev->canvas.x, ev->canvas.y, ev->timestamp);
-
-   if (e_config->gesture_service.use_cleanup_timer)
-     {
-        E_FREE_FUNC(gesture->cleanup_timer, ecore_timer_del);
-        gesture->cleanup_timer = ecore_timer_add(gesture->cleanup_time, _gesture_cleanup_timer, (void *)gesture);
-     }
 }
 
 static void