Eo: Added a flag to know if we have any callbacks to clear.

SVN revision: 71663
This commit is contained in:
Tom Hacohen 2012-06-03 13:33:09 +00:00
parent d07f3da945
commit 8fb40ff92f
1 changed files with 8 additions and 0 deletions

View File

@ -15,6 +15,7 @@ typedef struct
Eina_Inlist *callbacks;
int walking_list;
int event_freeze_count;
Eina_Bool deletions_waiting : 1;
} Private_Data;
typedef struct
@ -271,6 +272,12 @@ _eo_callbacks_clear(Private_Data *pd)
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)
@ -327,6 +334,7 @@ _ev_cb_del(Eo *obj, void *class_data, va_list *list)
(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;