eo_do(obj, eo_event_callback_del(EV_A_CHANGED, _a_changed_cb, (void *) 4));
fail_if(pd->cb_count != 2);
- void *ret;
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
+ eo_do(obj, eo_event_callback_del(EV_A_CHANGED, _a_changed_cb, (void *) 2));
fail_if(pd->cb_count != 1);
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, NULL, &ret));
- fail_if(ret);
- fail_if(pd->cb_count != 1);
- eo_do(obj, eo_event_callback_del(EV_A_CHANGED, NULL, 0));
- fail_if(pd->cb_count != 1);
-
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
+ eo_do(obj, eo_event_callback_del(EV_A_CHANGED, _a_changed_cb, (void *) 1));
fail_if(pd->cb_count != 0);
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
- fail_if(ret);
- fail_if(pd->cb_count != 0);
-
-
/* Freeze/thaw. */
int fcount = 0;
cb_count = 0;
eo_do(obj, eo_event_freeze_get(&fcount));
fail_if(fcount != 0);
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
- fail_if(!ret);
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
- fail_if(!ret);
- eo_do(obj, eo_event_callback_del_lazy(EV_A_CHANGED, _a_changed_cb, &ret));
- fail_if(ret);
+ eo_do(obj, eo_event_callback_del(EV_A_CHANGED, _a_changed_cb, (void *) 1));
+ eo_do(obj, eo_event_callback_del(EV_A_CHANGED, _a_changed_cb, (void *) 2));
/* Global Freeze/thaw. */
fcount = 0;
EO_BASE_SUB_ID_WREF_DEL,
EO_BASE_SUB_ID_EVENT_CALLBACK_PRIORITY_ADD,
EO_BASE_SUB_ID_EVENT_CALLBACK_DEL,
- EO_BASE_SUB_ID_EVENT_CALLBACK_DEL_LAZY,
EO_BASE_SUB_ID_EVENT_CALLBACK_CALL,
EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_ADD,
EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_DEL,
/**
- * @def eo_event_callback_del_lazy
- * @brief Del a callback for an event
- * @param[in] desc The description of the event to listen to.
- * @param[in] func the callback to delete.
- * @param[out] user_data The user data associated with the callback func.
- *
- * @see eo_event_callback_del()
- */
-#define eo_event_callback_del_lazy(desc, func, user_data) EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL_LAZY), EO_TYPECHECK(const Eo_Event_Description *, desc), EO_TYPECHECK(Eo_Event_Cb, func), EO_TYPECHECK(void **, user_data)
-
-/**
* @def eo_event_callback_del
* @brief Del a callback with a specific data associated to it for an event.
* @param[in] desc The description of the event to listen to.
* @param[in] func the callback to delete.
* @param[in] user_data The data to compare.
*
- * @see eo_event_callback_del_lazy()
*/
#define eo_event_callback_del(desc, func, user_data) EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL), EO_TYPECHECK(const Eo_Event_Description *, desc), EO_TYPECHECK(Eo_Event_Cb, func), EO_TYPECHECK(const void *, user_data)
}
static void
-_ev_cb_del_lazy(Eo *obj, void *class_data, va_list *list)
-{
- Private_Data *pd = (Private_Data *) class_data;
- const Eo_Event_Description *desc = va_arg(*list, const Eo_Event_Description *);
- Eo_Event_Cb func = va_arg(*list, Eo_Event_Cb);
- void **ret = va_arg(*list, void **);
-
- Eo_Callback_Description *cb;
- EINA_INLIST_FOREACH(pd->callbacks, cb)
- {
- if ((cb->event == desc) && (cb->func == func))
- {
- void *data;
-
- data = cb->func_data;
- cb->delete_me = EINA_TRUE;
- _eo_callbacks_clear(pd);
- if (ret) *ret = data;
- eo_do(obj, eo_event_callback_call(EO_EV_CALLBACK_DEL, desc, NULL));
- return;
- }
- }
-
- if (ret) *ret = NULL;
-}
-
-static void
_ev_cb_del(Eo *obj, void *class_data, va_list *list)
{
Private_Data *pd = (Private_Data *) class_data;
EO_OP_FUNC_CONST(EO_BASE_ID(EO_BASE_SUB_ID_WREF_DEL), _wref_del),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_PRIORITY_ADD), _ev_cb_priority_add),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL), _ev_cb_del),
- EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL_LAZY), _ev_cb_del_lazy),
EO_OP_FUNC_CONST(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_CALL), _ev_cb_call),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_ADD), _ev_cb_forwarder_add),
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_DEL), _ev_cb_forwarder_del),
EO_OP_DESCRIPTION_CONST(EO_BASE_SUB_ID_WREF_DEL, "?", "Delete the weak ref."),
EO_OP_DESCRIPTION(EO_BASE_SUB_ID_EVENT_CALLBACK_PRIORITY_ADD, "?", "Add an event callback with a priority."),
EO_OP_DESCRIPTION(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL, "?", "Delete an event callback"),
- EO_OP_DESCRIPTION(EO_BASE_SUB_ID_EVENT_CALLBACK_DEL_LAZY, "?", "Delete an event callback in a lazy way."),
EO_OP_DESCRIPTION_CONST(EO_BASE_SUB_ID_EVENT_CALLBACK_CALL, "?", "Call the event callbacks for an event."),
EO_OP_DESCRIPTION(EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_ADD, "?", "Add an event forwarder."),
EO_OP_DESCRIPTION(EO_BASE_SUB_ID_EVENT_CALLBACK_FORWARDER_DEL, "?", "Delete an event forwarder."),