Files
2021-09-23 19:08:32 -07:00

98 lines
3.2 KiB
Diff

diff --git a/src/evdev.c b/src/evdev.c
index c3c02d2a..ef773e6a 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -1991,7 +1991,7 @@ evdev_notify_added_device(struct evdev_device *device)
static bool
evdev_device_have_same_syspath(struct udev_device *udev_device, int fd)
{
- struct udev *udev = udev_device_get_udev(udev_device);
+ struct udev *udev = udev_device_get_udev(udev_device);
struct udev_device *udev_device_new = NULL;
struct stat st;
bool rc = false;
@@ -1999,9 +1999,13 @@ evdev_device_have_same_syspath(struct udev_device *udev_device, int fd)
if (fstat(fd, &st) < 0)
goto out;
+ printf("st_rdev: %d\n", st.st_rdev);
udev_device_new = udev_device_new_from_devnum(udev, 'c', st.st_rdev);
if (!udev_device_new)
goto out;
+
+ printf("same syspath: %s %s\n", udev_device_get_syspath(udev_device_new),
+ udev_device_get_syspath(udev_device));
rc = streq(udev_device_get_syspath(udev_device_new),
udev_device_get_syspath(udev_device));
@@ -2174,6 +2178,8 @@ evdev_device_create(struct libinput_seat *seat,
return NULL;
}
+ log_error(libinput, "%s: evdev_device_create\n", sysname);
+
if (udev_device_should_be_ignored(udev_device)) {
log_debug(libinput, "%s: device is ignored\n", sysname);
return NULL;
@@ -2182,7 +2188,8 @@ evdev_device_create(struct libinput_seat *seat,
/* Use non-blocking mode so that we can loop on read on
* evdev_device_data() until all events on the fd are
* read. mtdev_get() also expects this. */
- fd = open_restricted(libinput, devnode,
+ //fd = open_restricted(libinput, devnode,
+ fd = open(devnode,
O_RDWR | O_NONBLOCK | O_CLOEXEC);
if (fd < 0) {
log_info(libinput,
@@ -2193,8 +2200,11 @@ evdev_device_create(struct libinput_seat *seat,
return NULL;
}
- if (!evdev_device_have_same_syspath(udev_device, fd))
+ printf("Opened fd: %d from devnode %s\n", fd, devnode);
+ if (!evdev_device_have_same_syspath(udev_device, fd)){
+ log_error(libinput, "%s: not same syspath\n", sysname);
goto err;
+ }
device = zalloc(sizeof *device);
@@ -2204,8 +2214,10 @@ evdev_device_create(struct libinput_seat *seat,
evdev_drain_fd(fd);
rc = libevdev_new_from_fd(fd, &device->evdev);
- if (rc != 0)
+ if (rc != 0){
+ log_error(libinput, "%s: new_from_fd failed\n", sysname);
goto err;
+ }
libevdev_set_clock_id(device->evdev, CLOCK_MONOTONIC);
libevdev_set_device_log_function(device->evdev,
@@ -2241,16 +2253,22 @@ evdev_device_create(struct libinput_seat *seat,
evdev_pre_configure_model_quirks(device);
device->dispatch = evdev_configure_device(device);
- if (device->dispatch == NULL || device->seat_caps == 0)
+ if (device->dispatch == NULL || device->seat_caps == 0){
+ log_error(libinput, "%s: device->dispatch or device->seat_caps %d failed\n", sysname, device->seat_caps);
goto err;
+ }
device->source =
libinput_add_fd(libinput, fd, evdev_device_dispatch, device);
- if (!device->source)
+ if (!device->source){
+ log_error(libinput, "%s: device->source failed\n", sysname);
goto err;
+ }
- if (!evdev_set_device_group(device, udev_device))
+ if (!evdev_set_device_group(device, udev_device)){
+ log_error(libinput, "%s: set device group failed\n", sysname);
goto err;
+ }
list_insert(seat->devices_list.prev, &device->base.link);