From 48ce20ae21dbf8868f297dc7e44c1916bb81b4c7 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Wed, 7 Oct 2015 20:13:36 -0400 Subject: [PATCH] hidraw: allow uhid devices to detect siblings When using uhid devices, we might want to check for siblings too. This is a corner case so that's why it might not work in 100% of the cases. Signed-off-by: Benjamin Tissoires --- src/libratbag-hidraw.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libratbag-hidraw.c b/src/libratbag-hidraw.c index d4052bc2..b87e3747 100644 --- a/src/libratbag-hidraw.c +++ b/src/libratbag-hidraw.c @@ -218,11 +218,16 @@ __ratbag_find_hidraw(struct ratbag_device *device, if (!hid_udev) return -ENODEV; - if (use_usb_parent && device->ids.bustype == BUS_USB) + if (use_usb_parent && device->ids.bustype == BUS_USB) { /* using the parent usb_device to match siblings */ - parent_udev = udev_device_get_parent_with_subsystem_devtype(hid_udev, "usb", "usb_device"); - else + parent_udev = udev_device_get_parent(hid_udev); + if (!streq("uhid", udev_device_get_sysname(parent_udev))) + parent_udev = udev_device_get_parent_with_subsystem_devtype(hid_udev, + "usb", + "usb_device"); + } else { parent_udev = hid_udev; + } e = udev_enumerate_new(udev); udev_enumerate_add_match_subsystem(e, "hidraw");