evas: add evas_device_get_by_seat_id()
authorMike Blumenkrantz <zmike@osg.samsung.com>
Thu, 18 May 2017 15:36:55 +0000 (11:36 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 19 May 2017 17:17:31 +0000 (13:17 -0400)
sometimes it may be more useful to find a device by its hw id

@feature

src/lib/evas/Evas_Common.h
src/lib/evas/canvas/evas_device.c

index c7928aa..2cccabf 100644 (file)
@@ -1022,6 +1022,20 @@ EAPI const Eina_List *evas_device_list(Evas *e, const Evas_Device *dev);
 EAPI Evas_Device *evas_device_get(Evas *e, const char *name);
 
 /**
+ * Get a device by its seat id
+ *
+ * @param e The canvas to find the device on
+ * @param id The seat id of the device.
+ *
+ * Gets the device with id @p id on Evas @p e list of devices.
+ *
+ * @return the device or NULL if no device with a matching id was found.
+ *
+ * @since 1.20
+ */
+EAPI Evas_Device *evas_device_get_by_seat_id(Evas *eo_e, unsigned int id);
+
+/**
  * Set the name of a device as a string
  *
  * @p dev The device to set the name of
index 3d63a4c..2e7763a 100644 (file)
@@ -122,6 +122,29 @@ evas_device_get(Evas *eo_e, const char *name)
 }
 
 EAPI Evas_Device *
+evas_device_get_by_seat_id(Evas *eo_e, unsigned int id)
+{
+   unsigned int seat_id;
+   Evas_Public_Data *e;
+   Evas_Device *dev;
+   Eina_List *l;
+
+   SAFETY_CHECK(eo_e, EVAS_CANVAS_CLASS, NULL);
+
+   e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
+
+   EINA_LIST_FOREACH(e->devices, l, dev)
+     {
+        seat_id = efl_input_device_seat_id_get(dev);
+
+        if (seat_id == id)
+          return dev;
+     }
+
+   return NULL;
+}
+
+EAPI Evas_Device *
 evas_device_add(Evas *eo_e)
 {
    return evas_device_add_full(eo_e, NULL, NULL, NULL, NULL,