forked from enlightenment/efl
edje: improve callback count on Evas canvas.
Summary: This reduce by 3 the amount of callback registered on the canvas. Another potential improvement would be to only register those callback if someone is listening for a 'seat,*' event or if the edje file define seat filters. Depends on D10484 Reviewers: zmike, raster, bu5hm4n, Hermet Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T8321 Differential Revision: https://phab.enlightenment.org/D10486
This commit is contained in:
parent
5d69afdc09
commit
27e1bf2fe3
|
@ -646,18 +646,28 @@ _edje_device_changed_cb(void *data, const Efl_Event *event)
|
|||
_edje_seat_event_filter_apply(ed, seat);
|
||||
}
|
||||
|
||||
static void _edje_device_canvas_del(void *data, const Efl_Event *event);
|
||||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(edje_device_callbacks,
|
||||
{ EFL_CANVAS_SCENE_EVENT_DEVICE_ADDED, _edje_device_added_cb },
|
||||
{ EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED, _edje_device_removed_cb },
|
||||
{ EFL_EVENT_DEL, _edje_device_canvas_del });
|
||||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(edje_device_custom_callbacks,
|
||||
{ EFL_CANVAS_SCENE_EVENT_DEVICE_CHANGED, _edje_device_changed_cb },
|
||||
{ EFL_CANVAS_SCENE_EVENT_DEVICE_ADDED, _edje_device_added_cb },
|
||||
{ EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED, _edje_device_removed_cb },
|
||||
{ EFL_EVENT_DEL, _edje_device_canvas_del });
|
||||
|
||||
static void
|
||||
_edje_device_canvas_del(void *data, const Efl_Event *event)
|
||||
{
|
||||
Edje *ed = data;
|
||||
efl_event_callback_del(event->object, EFL_CANVAS_SCENE_EVENT_DEVICE_ADDED,
|
||||
_edje_device_added_cb, ed);
|
||||
efl_event_callback_del(event->object, EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED,
|
||||
_edje_device_removed_cb, ed);
|
||||
|
||||
if (ed->collection && ed->collection->use_custom_seat_names)
|
||||
efl_event_callback_del(event->object, EFL_CANVAS_SCENE_EVENT_DEVICE_CHANGED,
|
||||
_edje_device_changed_cb, ed);
|
||||
efl_event_callback_array_del(event->object, edje_device_custom_callbacks(), ed);
|
||||
else
|
||||
efl_event_callback_array_del(event->object, edje_device_callbacks(), ed);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -672,16 +682,11 @@ _edje_devices_add(Edje *ed, Evas *tev)
|
|||
if (efl_input_device_type_get(dev) == EFL_INPUT_DEVICE_TYPE_SEAT)
|
||||
_edje_device_add(ed, dev);
|
||||
}
|
||||
efl_event_callback_add(tev, EFL_EVENT_DEL, _edje_device_canvas_del, ed);
|
||||
|
||||
efl_event_callback_add(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_ADDED,
|
||||
_edje_device_added_cb, ed);
|
||||
efl_event_callback_add(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED,
|
||||
_edje_device_removed_cb, ed);
|
||||
|
||||
if (ed->collection && ed->collection->use_custom_seat_names)
|
||||
efl_event_callback_add(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_CHANGED,
|
||||
_edje_device_changed_cb, ed);
|
||||
efl_event_callback_array_add(tev, edje_device_custom_callbacks(), ed);
|
||||
else
|
||||
efl_event_callback_array_add(tev, edje_device_callbacks(), ed);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -1880,14 +1885,10 @@ _edje_file_callbacks_del(Edje *ed, Evas *e)
|
|||
Evas *tev = e;
|
||||
|
||||
if (!tev) tev = evas_object_evas_get(ed->obj);
|
||||
efl_event_callback_del(tev, EFL_EVENT_DEL, _edje_device_canvas_del, ed);
|
||||
efl_event_callback_del(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_ADDED,
|
||||
_edje_device_added_cb, ed);
|
||||
efl_event_callback_del(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED,
|
||||
_edje_device_removed_cb, ed);
|
||||
if (ed->collection && ed->collection->use_custom_seat_names)
|
||||
efl_event_callback_del(tev, EFL_CANVAS_SCENE_EVENT_DEVICE_CHANGED,
|
||||
_edje_device_changed_cb, ed);
|
||||
efl_event_callback_array_del(tev, edje_device_custom_callbacks(), ed);
|
||||
else
|
||||
efl_event_callback_array_del(tev, edje_device_callbacks(), ed);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in New Issue