it's conceivable that, were there a bug in client refcounting,
this could become an infinite loop and prevent shutdown/restart.
since, at this point, we don't really care about deleting anything,
ensure that the loop will end
EINTERN int
e_comp_shutdown(void)
{
+ Eina_List *l, *ll;
+ E_Client *ec;
+
#ifdef HAVE_WAYLAND
E_Pixmap_Type type = e_comp->comp_type;
#endif
E_FREE_FUNC(action_timeout, ecore_timer_del);
- while (e_comp->clients)
+ EINA_LIST_FOREACH_SAFE(e_comp->clients, l, ll, ec)
{
- DELD(eina_list_data_get(e_comp->clients), 99999);
- e_object_del(eina_list_data_get(e_comp->clients));
+ DELD(ec, 99999);
+ e_object_del(E_OBJECT(ec));
}
e_object_del(E_OBJECT(e_comp));
E_FREE_LIST(handlers, ecore_event_handler_del);