Eina_Inlist *callbacks;
int walking_list;
int event_freeze_count;
+ Eina_Bool deletions_waiting : 1;
} Private_Data;
typedef struct
if (pd->walking_list > 0)
return;
+ /* If there are no deletions waiting. */
+ if (!pd->deletions_waiting)
+ return;
+
+ pd->deletions_waiting = EINA_FALSE;
+
EINA_INLIST_FOREACH_SAFE(pd->callbacks, itn, cb)
{
if (cb->delete_me)
(cb->func_data == user_data))
{
cb->delete_me = EINA_TRUE;
+ pd->deletions_waiting = EINA_TRUE;
_eo_callbacks_clear(pd);
eo_do(obj, eo_event_callback_call(EO_EV_CALLBACK_DEL, desc, NULL));
return;