diff --git a/legacy/edje/src/lib/edje_main.c b/legacy/edje/src/lib/edje_main.c index f802ec110d..31175bdb4b 100644 --- a/legacy/edje/src/lib/edje_main.c +++ b/legacy/edje/src/lib/edje_main.c @@ -150,6 +150,13 @@ edje_shutdown(void) void _edje_del(Edje *ed) { + Edje_Running_Program *runp; + Edje_Pending_Program *pp; + Edje_Signal_Callback *escb; + Edje_Color_Class *cc; + Edje_Text_Class *tc; + Edje_Text_Insert_Filter_Callback *cb; + if (ed->processing_messages) { ed->delete_me = 1; @@ -167,57 +174,29 @@ _edje_del(Edje *ed) { _edje_animators = eina_list_remove(_edje_animators, ed); } - while (ed->actions) + EINA_LIST_FREE(ed->actions, runp) + free(runp); + EINA_LIST_FREE(ed->pending_actions, pp) + free(pp); + EINA_LIST_FREE(ed->callbacks, escb) { - Edje_Running_Program *runp; - - runp = eina_list_data_get(ed->actions); - ed->actions = eina_list_remove(ed->actions, runp); - free(runp); - } - while (ed->pending_actions) - { - Edje_Pending_Program *pp; - - pp = eina_list_data_get(ed->pending_actions); - ed->pending_actions = eina_list_remove(ed->pending_actions, pp); - free(pp); - } - while (ed->callbacks) - { - Edje_Signal_Callback *escb; - - escb = eina_list_data_get(ed->callbacks); - ed->callbacks = eina_list_remove(ed->callbacks, escb); if (escb->signal) eina_stringshare_del(escb->signal); if (escb->source) eina_stringshare_del(escb->source); free(escb); } - while (ed->color_classes) + EINA_LIST_FREE(ed->color_classes, cc) { - Edje_Color_Class *cc; - - cc = eina_list_data_get(ed->color_classes); - ed->color_classes = eina_list_remove(ed->color_classes, cc); if (cc->name) eina_stringshare_del(cc->name); free(cc); } - while (ed->text_classes) + EINA_LIST_FREE(ed->text_classes, tc) { - Edje_Text_Class *tc; - - tc = eina_list_data_get(ed->text_classes); - ed->text_classes = eina_list_remove(ed->text_classes, tc); if (tc->name) eina_stringshare_del(tc->name); if (tc->font) eina_stringshare_del(tc->font); free(tc); } - while (ed->text_insert_filter_callbacks) + EINA_LIST_FREE(ed->text_insert_filter_callbacks, cb) { - Edje_Text_Insert_Filter_Callback *cb; - - cb = eina_list_data_get(ed->text_insert_filter_callbacks); - ed->text_insert_filter_callbacks = eina_list_remove(ed->text_insert_filter_callbacks, cb); eina_stringshare_del(cb->part); free(cb); }