Bug 89949

Summary: Fake finger switching bug in edge scrolling and tapping code
Product: Wayland Reporter: Peter Hutterer <peter.hutterer>
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: jwrdegoede, peter.hutterer
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: evemu recording
0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch

Description Peter Hutterer 2015-04-08 05:19:03 UTC
Created attachment 114942 [details]
evemu recording

To switch from one to two fingers on a touchpad without slots, the event sequence is:
BTN_TOOL_FINGER 0
BTN_TOOL_DOUBLETAP 1
SYN_REPORT

On those touchpads, all touches are fake touches (sort-of). The above sequence will end the currently active touch and then re-start two new touches when the DOUBLETAP is seen. This triggers a bug message in the edge scrolling code - since there is no SYN_REPORT between the BTN_TOOL the touch is still in AREA state when it is re-triggered as a TOUCH_BEGIN.

This also affects the tapping code.

The sequence attached is enough to trigger it, full sequence in the bug here:
https://bugzilla.redhat.com/show_bug.cgi?id=1209151
Comment 1 Peter Hutterer 2015-04-08 07:05:53 UTC
Created attachment 114948 [details] [review]
0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch

actually, this looked easier than I thought at first. All we need to do is delay the fake touch start/end until SYN_REPORT time and that's only a few lines of shuffling around.
Comment 2 Hans de Goede 2015-04-08 08:30:10 UTC
Comment on attachment 114948 [details] [review]
0001-touchpad-delay-fake-finger-processing-until-the-EV_S.patch

Patch looks good and is:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Comment 3 Peter Hutterer 2015-04-08 22:58:32 UTC
commit ac0f5e799aec72ab392f6d79bbd97662000335e7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Apr 8 17:00:50 2015 +1000

    touchpad: delay fake finger processing until the EV_SYN

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.