mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-05-05 04:08:03 +02:00
tablet: reject mislabelled tablet devices
The HUION 580 has a "consumer control" event node that has an ABS_VOLUME, keys and a REL_HWHEEL. It has the same VID/PID as the pen tablet and libwacom labels it as ID_INPUT_TABLET. This causes a crash later when we try to init pointer acceleration for a device that doesn't have axes. https://bugzilla.redhat.com/show_bug.cgi?id=1314955 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
b4a74bcebc
commit
5d904b6319
1 changed files with 28 additions and 0 deletions
|
|
@ -1612,6 +1612,31 @@ tablet_init_left_handed(struct evdev_device *device)
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
tablet_reject_device(struct evdev_device *device)
|
||||
{
|
||||
struct libevdev *evdev = device->evdev;
|
||||
int rc = -1;
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_ABS, ABS_X) ||
|
||||
!libevdev_has_event_code(evdev, EV_ABS, ABS_Y))
|
||||
goto out;
|
||||
|
||||
if (!libevdev_has_event_code(evdev, EV_KEY, BTN_TOOL_PEN))
|
||||
goto out;
|
||||
|
||||
rc = 0;
|
||||
|
||||
out:
|
||||
if (rc) {
|
||||
log_bug_libinput(device->base.seat->libinput,
|
||||
"Device '%s' does not meet tablet criteria. "
|
||||
"Ignoring this device.\n",
|
||||
device->devname);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
tablet_init(struct tablet_dispatch *tablet,
|
||||
struct evdev_device *device)
|
||||
|
|
@ -1625,6 +1650,9 @@ tablet_init(struct tablet_dispatch *tablet,
|
|||
tablet->current_tool_type = LIBINPUT_TOOL_NONE;
|
||||
list_init(&tablet->tool_list);
|
||||
|
||||
if (tablet_reject_device(device))
|
||||
return -1;
|
||||
|
||||
tablet_init_calibration(tablet, device);
|
||||
tablet_init_proximity_threshold(tablet, device);
|
||||
rc = tablet_init_accel(tablet, device);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue