summaryrefslogtreecommitdiff
path: root/panels/common
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-06-06 14:29:16 +0200
committerCarlos Garnacho <carlosg@gnome.org>2016-11-04 23:26:41 +0100
commit8f9259ac06db4c2830fa9e79227bb56abdee86ca (patch)
tree97122f4ecc898c6dd9e8cdb373a52ceab2e3a5f3 /panels/common
parentcfec960c56b9aef4377d04d8fdb12eab413266a8 (diff)
downloadgnome-control-center-8f9259ac06db4c2830fa9e79227bb56abdee86ca.tar.gz
common: Implement lookup vfunc in GsdDeviceManagerUdev
Diffstat (limited to 'panels/common')
-rw-r--r--panels/common/gsd-device-manager-udev.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/panels/common/gsd-device-manager-udev.c b/panels/common/gsd-device-manager-udev.c
index 6289f55df..1522f409d 100644
--- a/panels/common/gsd-device-manager-udev.c
+++ b/panels/common/gsd-device-manager-udev.c
@@ -24,6 +24,7 @@
#include <string.h>
#include <gudev/gudev.h>
+#include <gdk/gdkwayland.h>
#include "gsd-device-manager-udev.h"
struct _GsdUdevDeviceManager
@@ -221,6 +222,30 @@ gsd_udev_device_manager_list_devices (GsdDeviceManager *manager,
return devices;
}
+static GsdDevice *
+gsd_udev_device_manager_lookup_device (GsdDeviceManager *manager,
+ GdkDevice *gdk_device)
+{
+ const gchar *node_path;
+ GHashTableIter iter;
+ GsdDevice *device;
+
+ node_path = gdk_wayland_device_get_node_path (gdk_device);
+ if (!node_path)
+ return NULL;
+
+ g_hash_table_iter_init (&iter, GSD_UDEV_DEVICE_MANAGER (manager)->devices);
+
+ while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &device)) {
+ if (g_strcmp0 (node_path,
+ gsd_device_get_device_file (device)) == 0) {
+ return device;
+ }
+ }
+
+ return NULL;
+}
+
static void
gsd_udev_device_manager_class_init (GsdUdevDeviceManagerClass *klass)
{
@@ -229,4 +254,5 @@ gsd_udev_device_manager_class_init (GsdUdevDeviceManagerClass *klass)
object_class->finalize = gsd_udev_device_manager_finalize;
manager_class->list_devices = gsd_udev_device_manager_list_devices;
+ manager_class->lookup_device = gsd_udev_device_manager_lookup_device;
}