From b79eccfc57d4d9c9273836f599a72d941891b04e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 14 May 2010 07:36:43 +0000 Subject: [PATCH] EVEN MORE OLD UDEV COMPAT ADGSGOUIGHAWEGAOUGAWEF SVN revision: 48859 --- legacy/eeze/src/lib/udev/eeze_udev.c | 28 +++++++++++++++++++++- legacy/eeze/src/lib/udev/eeze_udev_watch.c | 2 +- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/legacy/eeze/src/lib/udev/eeze_udev.c b/legacy/eeze/src/lib/udev/eeze_udev.c index 7f09a68c22..f8c88348b1 100644 --- a/legacy/eeze/src/lib/udev/eeze_udev.c +++ b/legacy/eeze/src/lib/udev/eeze_udev.c @@ -1,6 +1,9 @@ #include "eeze_udev_private.h" #include +/* from watch.c */ +Eina_Bool _walk_parents_for_attr(struct udev_device *device, const char *sysattr, const char* value); + /** * @defgroup udev udev * @@ -430,8 +433,18 @@ eeze_udev_syspath_is_mouse(const char *syspath) eina_strbuf_append(sbuf, syspath); device = udev_device_new_from_syspath(udev, eina_strbuf_string_get(sbuf)); +#ifdef OLD_UDEV_RRRRRRRRRRRRRR + mouse = _walk_parents_for_attr(device, "bInterfaceProtocol", "02"); + if (!mouse) + { + test = udev_device_get_property_value(device, "ID_CLASS"); + if ((test) && (!strcmp(test, "mouse"))) + mouse = 1; + } +#else test = udev_device_get_property_value(device, "ID_INPUT_MOUSE"); if (test) mouse = atoi(test); +#endif udev_device_unref(device); udev_unref(udev); @@ -466,8 +479,18 @@ eeze_udev_syspath_is_kbd(const char *syspath) eina_strbuf_append(sbuf, syspath); device = udev_device_new_from_syspath(udev, eina_strbuf_string_get(sbuf)); +#ifdef OLD_UDEV_RRRRRRRRRRRRRR + kbd = _walk_parents_for_attr(device, "bInterfaceProtocol", "01"); + if (!kbd) + { + test = udev_device_get_property_value(device, "ID_CLASS"); + if ((test) && (!strcmp(test, "kbd"))) + kbd = 1; + } +#else test = udev_device_get_property_value(device, "ID_INPUT_KEYBOARD"); if (test) kbd = atoi(test); +#endif udev_device_unref(device); udev_unref(udev); @@ -502,9 +525,12 @@ eeze_udev_syspath_is_touchpad(const char *syspath) eina_strbuf_append(sbuf, syspath); device = udev_device_new_from_syspath(udev, eina_strbuf_string_get(sbuf)); +#ifdef OLD_UDEV_RRRRRRRRRRRRRR + touchpad = _walk_parents_for_attr(device, "resolution", NULL); +#else test = udev_device_get_property_value(device, "ID_INPUT_TOUCHPAD"); if (test) touchpad = atoi(test); - +#endif udev_device_unref(device); udev_unref(udev); diff --git a/legacy/eeze/src/lib/udev/eeze_udev_watch.c b/legacy/eeze/src/lib/udev/eeze_udev_watch.c index d189fc03b8..3924e06088 100644 --- a/legacy/eeze/src/lib/udev/eeze_udev_watch.c +++ b/legacy/eeze/src/lib/udev/eeze_udev_watch.c @@ -24,7 +24,7 @@ struct _store_data * walks up the device tree checking each node for sysattr * with value value */ -static Eina_Bool +Eina_Bool _walk_parents_for_attr(struct udev_device *device, const char *sysattr, const char* value) { struct udev_device *parent, *child = device;