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

Reply via email to