From 182b7b7da92e634d6bd3786076014d1f9e4d5121 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 28 Apr 2015 09:50:02 +1000 Subject: [PATCH] touchpad: fix double/multitap timeouts The current doubletap timeout was incorrect, it gave the user only 180ms to touch, release, touch, release to recognise a doubletap. But it would also set a timeout on the second release, delaying the button events by 180ms. Instead, re-arm the timer on the second touch down. This gives the user 180ms to release and touch again (or time out). This makes doubletap much more reliable and reduces the delay between the release and the button events arriving since the finger down time is already counted. Same fix for MULTITAP, though we already armed the timer on touch down so we just have to remove the new timer on touch release which did little but delay everything. https://bugs.freedesktop.org/show_bug.cgi?id=90172 Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- src/evdev-mt-touchpad-tap.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/evdev-mt-touchpad-tap.c b/src/evdev-mt-touchpad-tap.c index 7d1fc84..50e1512 100644 --- a/src/evdev-mt-touchpad-tap.c +++ b/src/evdev-mt-touchpad-tap.c @@ -224,6 +224,7 @@ tp_tap_tapped_handle_event(struct tp_dispatch *tp, break; case TAP_EVENT_TOUCH: tp->tap.state = TAP_STATE_DRAGGING_OR_DOUBLETAP; + tp_tap_set_timer(tp, time); break; case TAP_EVENT_TIMEOUT: tp->tap.state = TAP_STATE_IDLE; @@ -355,7 +356,6 @@ tp_tap_dragging_or_doubletap_handle_event(struct tp_dispatch *tp, case TAP_EVENT_RELEASE: tp->tap.state = TAP_STATE_MULTITAP; tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED); - tp_tap_set_timer(tp, time); break; case TAP_EVENT_MOTION: case TAP_EVENT_TIMEOUT: @@ -487,7 +487,6 @@ tp_tap_multitap_down_handle_event(struct tp_dispatch *tp, case TAP_EVENT_RELEASE: tp->tap.state = TAP_STATE_MULTITAP; tp_tap_notify(tp, time, 1, LIBINPUT_BUTTON_STATE_RELEASED); - tp_tap_set_timer(tp, time); break; case TAP_EVENT_TOUCH: tp->tap.state = TAP_STATE_DRAGGING_2; -- 2.7.4