From: Peter Hutterer Date: Mon, 27 Apr 2015 23:50:02 +0000 (+1000) Subject: touchpad: fix double/multitap timeouts X-Git-Tag: 0.15.0~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=182b7b7da92e634d6bd3786076014d1f9e4d5121;p=platform%2Fupstream%2Flibinput.git 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 --- 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;