Safe looping on shutdown.

SVN revision: 29370
This commit is contained in:
Sebastian Dransfeld 2007-04-05 11:59:17 +00:00
parent cca951359d
commit d800072edf
2 changed files with 19 additions and 15 deletions

View File

@ -918,7 +918,7 @@ e_container_all_thaw(void)
static void
_e_container_free(E_Container *con)
{
Evas_List *l, *tmp;
Evas_List *l;
ecore_x_window_del(con->event_win);
/* We can't use e_object_del here, because border adds a ref to itself
@ -939,11 +939,12 @@ _e_container_free(E_Container *con)
}
}
*/
for (l = con->zones; l;)
l = con->zones;
con->zones = NULL;
while (l)
{
tmp = l;
l = l->next;
e_object_del(E_OBJECT(tmp->data));
e_object_del(E_OBJECT(l->data));
l = evas_list_remove_list(l, l);
}
con->manager->containers = evas_list_remove(con->manager->containers, con);
e_canvas_del(con->bg_ecore_evas);

View File

@ -55,12 +55,14 @@ e_manager_init(void)
EAPI int
e_manager_shutdown(void)
{
Evas_List *l, *tmp;
for (l = managers; l;)
Evas_List *l;
l = managers;
managers = NULL;
while (l)
{
tmp = l;
l = l->next;
e_object_del(E_OBJECT(tmp->data));
e_object_del(E_OBJECT(l->data));
l = evas_list_remove_list(l, l);
}
if (frame_extents)
{
@ -491,7 +493,7 @@ e_managers_keys_ungrab(void)
static void
_e_manager_free(E_Manager *man)
{
Evas_List *l, *tmp;
Evas_List *l;
while (man->handlers)
{
@ -501,11 +503,12 @@ _e_manager_free(E_Manager *man)
man->handlers = evas_list_remove_list(man->handlers, man->handlers);
ecore_event_handler_del(h);
}
for (l = man->containers; l;)
l = man->containers;
man->containers = NULL;
while (l)
{
tmp = l;
l = l->next;
e_object_del(E_OBJECT(tmp->data));
e_object_del(E_OBJECT(l->data));
l = evas_list_remove_list(l, l);
}
if (man->root != man->win)
{