mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-03-21 23:50:45 +01:00
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 <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
c9a3c7a7e3
commit
bb2678bfe8
1 changed files with 7 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue