mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-24 19:20:05 +01:00
touchpad: check touchpad for basic features we expect
If a relative device is tagged by udev as ID_INPUT_TOUCHPAD we need to catch this before we try to dereference device->abs.absinfo_x. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
d8208940e0
commit
a4313f13e3
1 changed files with 27 additions and 0 deletions
|
|
@ -1439,6 +1439,30 @@ tp_init_sendevents(struct tp_dispatch *tp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
tp_sanity_check(struct tp_dispatch *tp,
|
||||
struct evdev_device *device)
|
||||
{
|
||||
struct libevdev *evdev = device->evdev;
|
||||
struct libinput *libinput = tp_libinput_context(tp);
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_ABS, ABS_X))
|
||||
goto error;
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_KEY, BTN_TOUCH))
|
||||
goto error;
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_KEY, BTN_TOOL_FINGER))
|
||||
goto error;
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
log_bug_kernel(libinput,
|
||||
"device %s failed touchpad sanity checks\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
tp_init(struct tp_dispatch *tp,
|
||||
struct evdev_device *device)
|
||||
|
|
@ -1449,6 +1473,9 @@ tp_init(struct tp_dispatch *tp,
|
|||
tp->base.interface = &tp_interface;
|
||||
tp->device = device;
|
||||
|
||||
if (tp_sanity_check(tp, device) != 0)
|
||||
return -1;
|
||||
|
||||
if (tp_init_slots(tp, device) != 0)
|
||||
return -1;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue