From: Peter Hutterer Date: Fri, 13 Feb 2015 01:40:19 +0000 (+1000) Subject: evdev: check the first parent of the event node for ID_INPUT tags X-Git-Tag: 0.11.0~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=65e077759b1a1ca3218e27ae32c46b901a747c05;p=platform%2Fupstream%2Flibinput.git evdev: check the first parent of the event node for ID_INPUT tags Bluetooth tablet devices' rules can't tag the event node directly, they can only tag the first parent (the /sys/class/input/input1234 node). Check that parent for tags too, lest we miss something important. Signed-off-by: Peter Hutterer Tested-by: Benjamin Tissoires --- diff --git a/src/evdev.c b/src/evdev.c index 11fa89ba..cf21d2e2 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1356,16 +1356,23 @@ evdev_device_get_udev_tags(struct evdev_device *device, { const char *prop; enum evdev_device_udev_tags tags = 0; - const struct evdev_udev_tag_match *match = evdev_udev_tag_matches; - - while (match->name) { - prop = udev_device_get_property_value(device->udev_device, + const struct evdev_udev_tag_match *match; + int i; + + for (i = 0; i < 2 && udev_device; i++) { + match = evdev_udev_tag_matches; + while (match->name) { + prop = udev_device_get_property_value( + udev_device, match->name); - if (prop) - tags |= match->tag; + if (prop) + tags |= match->tag; - match++; + match++; + } + udev_device = udev_device_get_parent(udev_device); } + return tags; }