mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-01 03:30:08 +01:00
touchpad: make sure we compare only the last 3 events for wobble
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@who-t.net>
(cherry picked from commit 5883ac7d98)
This commit is contained in:
parent
42e8813a63
commit
204820e4de
1 changed files with 3 additions and 2 deletions
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue