From: duna.oh Date: Fri, 29 Mar 2024 06:49:49 +0000 (+0900) Subject: e_service_gesture: Delete cleanup_timer when the last touched finger is up X-Git-Tag: accepted/tizen/8.0/unified/20240401.145054^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6fdad974d382be1bb2c79567414a816f2474eca3;p=platform%2Fupstream%2Fenlightenment.git e_service_gesture: Delete cleanup_timer when the last touched finger is up < 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 --- diff --git a/src/bin/services/e_service_gesture.c b/src/bin/services/e_service_gesture.c index e5f7d7b79d..2d42859753 100644 --- a/src/bin/services/e_service_gesture.c +++ b/src/bin/services/e_service_gesture.c @@ -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