touchpad: don't NONE or HOVERING touches towards the touch
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 19 Jul 2018 04:52:44 +0000 (14:52 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 19 Jul 2018 04:52:44 +0000 (14:52 +1000)
To trigger this, we'd need 1, 2, 3 fingers down, release fingers 1 and 2 but
keep 3 down. Then put finger 1 down again. Touches 1 and 3 are alive now,
touch 2 is in state NONE.

During the thumb detection we took the first touch not in BEGIN and assigned
it to "first" - this would now be the second touch in state NONE.

Real effect is relatively minimal since we only use the coordinates here.

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/89

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/evdev-mt-touchpad.c

index 5554c0b..25d0f23 100644 (file)
@@ -1472,6 +1472,10 @@ tp_detect_thumb_while_moving(struct tp_dispatch *tp)
        struct phys_coords mm;
 
        tp_for_each_touch(tp, t) {
+               if (t->state == TOUCH_NONE ||
+                   t->state == TOUCH_HOVERING)
+                       continue;
+
                if (t->state != TOUCH_BEGIN)
                        first = t;
                else