diff options
author | Tom Hacohen <tom@stosb.com> | 2014-09-26 10:09:15 +0100 |
---|---|---|
committer | Tom Hacohen <tom@stosb.com> | 2014-09-26 10:10:51 +0100 |
commit | c15f16c9c8559d1dc966bff66403fdf3db84c10c (patch) | |
tree | e1f778c3a61441416dda9ca079b9333feb48991f /src/lib | |
parent | dc1382b9d0c32cc64d6de6266244889578eb13bd (diff) |
Elm win: fix wrong deletion of elm windows.
This is a fix upon 6e7686c030fab162edb3128de005ec00ea8c0ffc.
This correctly deletes the list even if the windows are still referenced
and even if they are deleted from under out feets.
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/elm_win.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 1e6b9985e..ed6a2e71f 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c | |||
@@ -2105,10 +2105,15 @@ _elm_win_on_resize_obj_changed_size_hints(void *data, | |||
2105 | void | 2105 | void |
2106 | _elm_win_shutdown(void) | 2106 | _elm_win_shutdown(void) |
2107 | { | 2107 | { |
2108 | Eina_List *itr, *itrn; | 2108 | while (_elm_win_list) |
2109 | Evas_Object *obj; | 2109 | { |
2110 | EINA_LIST_FOREACH_SAFE(_elm_win_list, itr, itrn, obj) | 2110 | Eina_List *itr = _elm_win_list; |
2111 | evas_object_del(obj); | 2111 | evas_object_del(itr->data); |
2112 | if (_elm_win_list == itr) | ||
2113 | { | ||
2114 | _elm_win_list = eina_list_remove_list(_elm_win_list, _elm_win_list); | ||
2115 | } | ||
2116 | } | ||
2112 | ELM_SAFE_FREE(_elm_win_state_eval_job, ecore_job_del); | 2117 | ELM_SAFE_FREE(_elm_win_state_eval_job, ecore_job_del); |
2113 | } | 2118 | } |
2114 | 2119 | ||