mirror of
https://github.com/commaai/agnos-builder.git
synced 2026-06-13 05:25:07 +08:00
98 lines
3.2 KiB
Diff
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);
|
|
|