-/* Callbacks */
-struct _Eo_Callback_Description
-{
- EINA_INLIST;
- const Eo_Event_Description *event;
- Eo_Event_Cb func;
- void *func_data;
- Eo_Callback_Priority priority;
- Eina_Bool delete_me : 1;
-};
-
-/* Actually remove, doesn't care about walking list, or delete_me */
-static void
-_eo_callback_remove(Eo *obj, Eo_Callback_Description *cb)
-{
- obj->callbacks = eina_inlist_remove(obj->callbacks,
- EINA_INLIST_GET(cb));
- free(cb);
-}
-
-/* Actually remove, doesn't care about walking list, or delete_me */
-static void
-_eo_callback_remove_all(Eo *obj)
-{
- Eina_Inlist *initr;
- Eo_Callback_Description *cb = NULL;
- EINA_INLIST_FOREACH_SAFE(obj->callbacks, initr, cb)
- {
- _eo_callback_remove(obj, cb);
- }
-}
-
-static void
-_eo_callbacks_clear(Eo *obj)
-{
- Eina_Inlist *itn;
- Eo_Callback_Description *cb = NULL;
-
- /* Abort if we are currently walking the list. */
- if (obj->walking_list > 0)
- return;
-
- EINA_INLIST_FOREACH_SAFE(obj->callbacks, itn, cb)
- {
- if (cb->delete_me)
- {
- _eo_callback_remove(obj, cb);
- }
- }
-}
-
-static int
-_callback_priority_cmp(const void *_a, const void *_b)
-{
- const Eo_Callback_Description *a, *b;
- a = (const Eo_Callback_Description *) _a;
- b = (const Eo_Callback_Description *) _b;
- if (a->priority < b->priority)
- return -1;
- else
- return 1;
-}
-
-EAPI Eina_Bool
-eo_event_callback_priority_add(Eo *obj,
- const Eo_Event_Description *desc,
- Eo_Callback_Priority priority,
- Eo_Event_Cb func,
- const void *data)
-{
- EO_MAGIC_RETURN_VAL(obj, EO_EINA_MAGIC, EINA_FALSE);
-
- Eo_Callback_Description *cb = calloc(1, sizeof(*cb));
- cb->event = desc;
- cb->func = func;
- cb->func_data = (void *) data;
- cb->priority = priority;
- obj->callbacks = eina_inlist_sorted_insert(obj->callbacks,
- EINA_INLIST_GET(cb), _callback_priority_cmp);
-
- eo_event_callback_call(obj, EO_EV_CALLBACK_ADD, desc);
-
- return EINA_TRUE;
-}
-
-EAPI void *
-eo_event_callback_del_lazy(Eo *obj, const Eo_Event_Description *desc, Eo_Event_Cb func)