From: Peter Hutterer Date: Thu, 30 Apr 2015 04:48:42 +0000 (+1000) Subject: touchpad: when clearing the touchpad state, release fake touches too X-Git-Tag: 0.15.0~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bb2678bfe88eb3e64f211533d776d6c277e731a8;p=platform%2Fupstream%2Flibinput.git touchpad: when clearing the touchpad state, release fake touches too Causes an error message in the device_disable_release_tap_n_drag test. When the touchpad is suspended, all touches are ended in tp_clear_state. Since the hovering support was added, this returns the touches to TOUCH_HOVERING, a subsequent tp_handle_state() will turn them back into TOUCH_BEGIN based on BTN_TOUCH and BTN_TOOL_FINGER still being down. Clear the fake touch buttons as well after ending the touches, this way the touch points are reset to TOUCH_NONE as intended. Once we do that we don't need to manually change the tap finger count when releasing taps, we can just let the count reset naturally. Signed-off-by: Peter Hutterer Reviewed-by: Hans de Goede --- diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c index d5ce8803..e017559d 100644 --- a/src/evdev-mt-touchpad.c +++ b/src/evdev-mt-touchpad.c @@ -749,6 +749,12 @@ tp_destroy(struct evdev_dispatch *dispatch) free(tp); } +static void +tp_release_fake_touches(struct tp_dispatch *tp) +{ + tp->fake_touches = 0; +} + static void tp_clear_state(struct tp_dispatch *tp) { @@ -772,6 +778,7 @@ tp_clear_state(struct tp_dispatch *tp) tp_for_each_touch(tp, t) { tp_end_sequence(tp, t, now); } + tp_release_fake_touches(tp); tp_handle_state(tp, now); }