diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2015-04-22 14:15:42 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-06-03 13:08:01 +0100 |
commit | 896e43cbd5dda3babb829ee59fe5c209e7dfc35e (patch) | |
tree | 44de008e859b39272008a205485bea202ece51e4 | |
parent | 71743ef660bc298da94c9a5963c40c3550ddc6b0 (diff) | |
download | clutter-896e43cbd5dda3babb829ee59fe5c209e7dfc35e.tar.gz |
gdk/device: Propagate more device details from GDK
In order to do device matching we need to propagate more information,
like the device_id (only on X11 with the XInput2 extension enabled),
the vendor id, and the product id.
https://bugzilla.gnome.org/show_bug.cgi?id=747951
-rw-r--r-- | clutter/gdk/clutter-input-device-gdk.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/clutter/gdk/clutter-input-device-gdk.c b/clutter/gdk/clutter-input-device-gdk.c index 9bbd534e6..2a079e936 100644 --- a/clutter/gdk/clutter-input-device-gdk.c +++ b/clutter/gdk/clutter-input-device-gdk.c @@ -26,6 +26,10 @@ #include "clutter-input-device-gdk.h" +#ifdef GDK_WINDOWING_X11 +#include <gdk/gdkx.h> +#endif + #include "clutter-debug.h" #include "clutter-device-manager-private.h" #include "clutter-private.h" @@ -101,6 +105,9 @@ _clutter_input_device_gdk_new (ClutterDeviceManager *manager, gboolean has_cursor = FALSE; const gchar *name; gboolean is_enabled = FALSE; + gint device_id; + const char *vendor_id = NULL; + const char *product_id = NULL; g_object_get (manager, "backend", &backend, NULL); @@ -151,6 +158,20 @@ _clutter_input_device_gdk_new (ClutterDeviceManager *manager, name = gdk_device_get_name (device); +#if defined(GDK_WINDOWING_X11) + /* If we're on X11, keep the device id in sync */ + if (GDK_IS_X11_DISPLAY (gdk_device_get_display (device))) + device_id = gdk_x11_device_get_id (device); + else +#endif + device_id = device_int_counter++; + + if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER) + { + product_id = gdk_device_get_product_id (device); + vendor_id = gdk_device_get_vendor_id (device); + } + clutter_device = g_object_new (CLUTTER_TYPE_INPUT_DEVICE_GDK, "backend", backend, "device-manager", manager, @@ -158,9 +179,11 @@ _clutter_input_device_gdk_new (ClutterDeviceManager *manager, "device-type", device_type, "has-cursor", has_cursor, "gdk-device", device, - "id", device_int_counter++, + "id", device_id, "name", name, "enabled", is_enabled, + "product-id", product_id, + "vendor-id", vendor_id, NULL); return clutter_device; } |