mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-09 08:18:09 +02:00
evdev: Combine evdev_handle_device() and evdev_configure_device()
We split the device probing and idenfication somewhat arbitrarily between these two functions. This commit combines them into one. Return of -1 indicates error, 0 success, but succesful probing can return a device with device->caps == 0, which means we don't handle the device.
This commit is contained in:
parent
1aaf3e42e2
commit
d24a64ea30
1 changed files with 7 additions and 11 deletions
18
src/evdev.c
18
src/evdev.c
|
|
@ -437,7 +437,7 @@ evdev_device_data(int fd, uint32_t mask, void *data)
|
|||
}
|
||||
|
||||
static int
|
||||
evdev_handle_device(struct evdev_device *device)
|
||||
evdev_configure_device(struct evdev_device *device)
|
||||
{
|
||||
struct input_absinfo absinfo;
|
||||
unsigned long ev_bits[NBITS(EV_MAX)];
|
||||
|
|
@ -498,6 +498,7 @@ evdev_handle_device(struct evdev_device *device)
|
|||
if (!TEST_BIT(abs_bits, ABS_MT_SLOT)) {
|
||||
device->mtdev = mtdev_new_open(device->fd);
|
||||
if (!device->mtdev) {
|
||||
device->caps = 0;
|
||||
weston_log("mtdev required but failed to open for %s\n",
|
||||
device->devnode);
|
||||
return 0;
|
||||
|
|
@ -557,15 +558,10 @@ evdev_handle_device(struct evdev_device *device)
|
|||
weston_log("input device %s, %s "
|
||||
"ignored: unsupported device type\n",
|
||||
device->devname, device->devnode);
|
||||
device->caps = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
evdev_configure_device(struct evdev_device *device)
|
||||
{
|
||||
if ((device->caps & (EVDEV_MOTION_ABS | EVDEV_MOTION_REL)) &&
|
||||
(device->caps & EVDEV_BUTTON)) {
|
||||
weston_seat_init_pointer(device->seat);
|
||||
|
|
@ -625,14 +621,14 @@ evdev_device_create(struct weston_seat *seat, const char *path, int device_fd)
|
|||
devname[sizeof(devname) - 1] = '\0';
|
||||
device->devname = strdup(devname);
|
||||
|
||||
if (!evdev_handle_device(device)) {
|
||||
if (evdev_configure_device(device) == -1)
|
||||
goto err;
|
||||
|
||||
if (device->seat_caps == 0) {
|
||||
evdev_device_destroy(device);
|
||||
return EVDEV_UNHANDLED_DEVICE;
|
||||
}
|
||||
|
||||
if (evdev_configure_device(device) == -1)
|
||||
goto err;
|
||||
|
||||
/* If the dispatch was not set up use the fallback. */
|
||||
if (device->dispatch == NULL)
|
||||
device->dispatch = fallback_dispatch_create();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue