diff options
author | Guilherme Iscaro <iscaro@profusion.mobi> | 2016-09-20 13:44:23 -0300 |
---|---|---|
committer | Guilherme Iscaro <iscaro@profusion.mobi> | 2016-09-26 18:09:06 -0300 |
commit | ebaf4846a3cfd32f1b23f3fe0540c1ec0f0ee86f (patch) | |
tree | 43c634b6ce08049286496af6bff13e9c92024296 | |
parent | 1c52e98018ea19b0d4afdbdcdf2cf2bf017fdfd6 (diff) | |
download | efl-ebaf4846a3cfd32f1b23f3fe0540c1ec0f0ee86f.tar.gz |
Evas_Device: Add evas_device_full_add() API.
This will make it simpler to add a Evas_Device with its fields already set.
-rw-r--r-- | src/lib/evas/Evas_Common.h | 28 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_device.c | 21 |
2 files changed, 47 insertions, 2 deletions
diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h index f7c8607290..ddc15df6f5 100644 --- a/src/lib/evas/Evas_Common.h +++ b/src/lib/evas/Evas_Common.h @@ -1126,11 +1126,39 @@ EAPI void evas_render_updates_free(Eina_List *updates); * @return the device node created or NULL if an error occurred. * * @see evas_device_del + * @see evas_device_full_add * @since 1.8 */ EAPI Evas_Device *evas_device_add(Evas *e); /** + * Add a new device type + * + * @param e The canvas to create the device node for. + * @param name The name of the device. + * @param desc The description of the device. + * @param parent_dev The parent device. + * @param emulation_dev The source device. + * @param clas The device class. + * @param sub_class The device subclass. + * + * Adds a new device node to the given canvas @p e. All devices created as + * part of the canvas @p e will automatically be deleted when the canvas + * is freed. + * + * @return the device node created or NULL if an error occurred. + * + * @see evas_device_del + * @since 1.19 + */ +EAPI Evas_Device *evas_device_full_add(Evas *eo_e, const char *name, + const char *desc, + Evas_Device *parent_dev, + Evas_Device *emulation_dev, + Evas_Device_Class clas, + Evas_Device_Subclass sub_clas); + +/** * Delete a new device type * * @param dev The device node you want to delete. diff --git a/src/lib/evas/canvas/evas_device.c b/src/lib/evas/canvas/evas_device.c index 6285264d6b..7fc8272340 100644 --- a/src/lib/evas/canvas/evas_device.c +++ b/src/lib/evas/canvas/evas_device.c @@ -36,19 +36,36 @@ _del_cb(void *data, const Efl_Event *ev) EAPI Evas_Device * evas_device_add(Evas *eo_e) { + return evas_device_full_add(eo_e, NULL, NULL, NULL, NULL, + EVAS_DEVICE_CLASS_NONE, + EVAS_DEVICE_SUBCLASS_NONE); +} + +EAPI Evas_Device * +evas_device_full_add(Evas *eo_e, const char *name, const char *desc, + Evas_Device *parent_dev, Evas_Device *emulation_dev, + Evas_Device_Class clas, Evas_Device_Subclass sub_clas) +{ Efl_Input_Device_Data *d; Evas_Public_Data *e; Evas_Device *dev; SAFETY_CHECK(eo_e, EVAS_CANVAS_CLASS, NULL); - dev = efl_add(EFL_INPUT_DEVICE_CLASS, eo_e); + dev = efl_add(EFL_INPUT_DEVICE_CLASS, eo_e, + efl_input_device_name_set(efl_added, name), + efl_input_device_description_set(efl_added, desc), + efl_input_device_type_set(efl_added, clas), + efl_input_device_subtype_set(efl_added, sub_clas), + efl_input_device_source_set(efl_added, emulation_dev), + efl_input_device_parent_set(efl_added, parent_dev)); d = efl_data_scope_get(dev, EFL_INPUT_DEVICE_CLASS); d->evas = eo_e; e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS); - e->devices = eina_list_append(e->devices, dev); + if (!parent_dev) + e->devices = eina_list_append(e->devices, dev); efl_event_callback_add(dev, EFL_EVENT_DEL, _del_cb, e); evas_event_callback_call(eo_e, EVAS_CALLBACK_DEVICE_CHANGED, dev); |