[PATCH libinput] touchpad: make sure we compare only the last 3 events for wobble
Peter Hutterer
peter.hutterer at who-t.net
Mon Mar 12 04:38:44 UTC 2018
We're left-shifting the bits but weren't comparing against the l_r_l mask
itself. So if we get a sequence of [1, 1, 0, 1] we didn't detect a wobble
because 0b1101 != 0b101 (what we're looking for).
Fix this by turning it into a right shift, that way the bits fall off
the mask automatic
al
ly
y
y
y
y
. .
_._v.___
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
src/evdev-mt-touchpad.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/evdev-mt-touchpad.c b/src/evdev-mt-touchpad.c
index e5d1277d..e9ed97a1 100644
--- a/src/evdev-mt-touchpad.c
+++ b/src/evdev-mt-touchpad.c
@@ -178,11 +178,12 @@ tp_detect_wobbling(struct tp_dispatch *tp,
return;
}
- t->hysteresis.x_motion_history <<= 1;
+ t->hysteresis.x_motion_history >>= 1;
if (dx > 0) { /* right move */
static const char r_l_r = 0x5; /* {Right, Left, Right} */
- t->hysteresis.x_motion_history |= 0x1;
+
+ t->hysteresis.x_motion_history |= (1 << 2);
if (t->hysteresis.x_motion_history == r_l_r) {
tp->hysteresis.enabled = true;
evdev_log_debug(tp->device, "hysteresis enabled\n");
--
2.14.3
More information about the wayland-devel
mailing list