evas: add getter for devices by name

Make it possible to get the evas device given
its name. It sounds useful for Edje since
programs will reference seats by name.
This commit is contained in:
Bruno Dilly 2016-11-17 16:50:44 -02:00
parent 25792d6416
commit 2958aba23a
2 changed files with 42 additions and 0 deletions

View File

@ -1239,6 +1239,22 @@ EAPI void evas_device_pop(Evas *e);
*/
EAPI const Eina_List *evas_device_list(Evas *e, const Evas_Device *dev);
/**
* Get a device by its name
*
* @param e The canvas to create the device node for.
* @param name The name of the device.
*
* Gets the first ocurrence of a device named as @p name
* on Evas @p e list of devices.
*
* @return the device or NULL if an error occurred, no name was provided,
* or no device with a matching name was found.
*
* @since 1.19
*/
EAPI Evas_Device *evas_device_get(Evas *e, const char *name);
/**
* Set the name of a device as a string
*

View File

@ -94,6 +94,32 @@ _del_cb(void *data, const Efl_Event *ev)
ev->object);
}
EAPI Evas_Device *
evas_device_get(Evas *eo_e, const char *name)
{
const char *dev_name;
Evas_Public_Data *e;
Evas_Device *dev;
Eina_List *l;
SAFETY_CHECK(eo_e, EVAS_CANVAS_CLASS, NULL);
if (!name)
return NULL;
e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
EINA_LIST_FOREACH(e->devices, l, dev)
{
dev_name = efl_input_device_name_get(dev);
if (eina_streq(dev_name, name))
return dev;
}
return NULL;
}
EAPI Evas_Device *
evas_device_add(Evas *eo_e)
{