mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-01-04 09:40:14 +01:00
fallback: fix touchscreen defuzzing
The hysteresis-returned point always differs from the current point, even if the hysteresis kicks in. We need to compare to the hysteresis center. And the returned point is only the new center if we exceed the margin, otherwise the center stays as-is. The touch_fuzz() test only succeeded for this because for the values we were introducing jitter by, the kernel filtered out all the actual movement so these paths weren't hit. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
6936a15558
commit
50418a0153
1 changed files with 4 additions and 3 deletions
|
|
@ -130,12 +130,13 @@ fallback_filter_defuzz_touch(struct fallback_dispatch *dispatch,
|
|||
point = evdev_hysteresis(&slot->point,
|
||||
&slot->hysteresis_center,
|
||||
&dispatch->mt.hysteresis_margin);
|
||||
slot->point = point;
|
||||
|
||||
slot->hysteresis_center = slot->point;
|
||||
if (point.x == slot->point.x && point.y == slot->point.y)
|
||||
if (point.x == slot->hysteresis_center.x &&
|
||||
point.y == slot->hysteresis_center.y)
|
||||
return true;
|
||||
|
||||
slot->point = point;
|
||||
slot->hysteresis_center = point;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue