* _ecore_event_purge_deleted() purges only events marked with
delete_me
* _ecore_events_exist() walks the events list to control that
at least one event with delete_me == 0 exists
Tests coming in a separate patch.
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@49434
7cbeb6ba-43b4-40fd-8cce-
4c39aea84d33
int
_ecore_event_exist(void)
{
- if (events) return 1;
+ Ecore_Event *e;
+ EINA_INLIST_FOREACH(events, e)
+ if (!e->delete_me) return 1;
return 0;
}
while (itr)
{
Ecore_Event *next = (Ecore_Event *)EINA_INLIST_GET(itr)->next;
- if (!itr->references)
+ if ((!itr->references) && (itr->delete_me))
_ecore_event_del(itr);
itr = next;
}
if (event_handler_current) /* may have changed in recursive main loops */
event_handler_current = (Ecore_Event_Handler *)EINA_INLIST_GET(event_handler_current)->next;
}
- e->delete_me = 1;
}
/* if no handlers were set for EXIT signal - then default is */
/* to quit the main loop */
if ((e->type == ECORE_EVENT_SIGNAL_EXIT) && (handle_count == 0))
ecore_main_loop_quit();
e->references--;
+ e->delete_me = 1;
}
if (event_current) /* may have changed in recursive main loops */