mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-05 01:40:29 +01:00
touchpad: mask out ABS_MT if we don't have or disable MT
Make sure the events we deal with are the ones we actually honor. This reduces the chance that we accidentally process events we weren't event supposed to get based on some earlier device decision. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
ebeba8e8ff
commit
43352590f7
1 changed files with 13 additions and 0 deletions
|
|
@ -1749,6 +1749,16 @@ tp_sync_touch(struct tp_dispatch *tp,
|
|||
libevdev_fetch_slot_value(evdev, slot, ABS_MT_DISTANCE, &t->distance);
|
||||
}
|
||||
|
||||
static inline void
|
||||
tp_disable_abs_mt(struct evdev_device *device)
|
||||
{
|
||||
struct libevdev *evdev = device->evdev;
|
||||
unsigned int code;
|
||||
|
||||
for (code = ABS_MT_SLOT; code <= ABS_MAX; code++)
|
||||
libevdev_disable_event_code(evdev, EV_ABS, code);
|
||||
}
|
||||
|
||||
static bool
|
||||
tp_init_slots(struct tp_dispatch *tp,
|
||||
struct evdev_device *device)
|
||||
|
|
@ -1804,6 +1814,9 @@ tp_init_slots(struct tp_dispatch *tp,
|
|||
tp->has_mt = false;
|
||||
}
|
||||
|
||||
if (!tp->has_mt)
|
||||
tp_disable_abs_mt(device);
|
||||
|
||||
ARRAY_FOR_EACH(max_touches, m) {
|
||||
if (libevdev_has_event_code(device->evdev,
|
||||
EV_KEY,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue