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.hutte...@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 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/wayland-devel