From 26de40cb1235ccc1e321bd0bb93c1e51ac08800b Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Wed, 29 Aug 2012 05:50:14 +0000 Subject: [PATCH] edje: fix a leak when propagating signal to GROUP part. SVN revision: 75808 --- legacy/edje/src/lib/edje_load.c | 3 +++ legacy/edje/src/lib/edje_message_queue.c | 11 +---------- legacy/edje/src/lib/edje_private.h | 2 ++ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index 453db2cf24..9b0791e21f 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -808,6 +808,7 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g obj); if (rp->part->type == EDJE_PART_TYPE_GROUP) { + ed->groups = eina_list_append(ed->groups, _edje_fetch(child_obj)); _edje_real_part_swallow(rp, child_obj, EINA_TRUE); _edje_subobj_register(ed, child_obj); source = NULL; @@ -1088,6 +1089,8 @@ _edje_file_del(Edje *ed) if (ed->obj) tev = evas_object_evas_get(ed->obj); + ed->groups = eina_list_free(ed->groups); + if (tev) evas_event_freeze(tev); if (ed->freeze_calc) { diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index d6479b285b..b6cd6368e0 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -63,16 +63,7 @@ edje_object_message_signal_process(Evas_Object *obj) ed = _edje_fetch(obj); if (!ed) return; - groups = eina_list_append(groups, ed); - for (i = 0; i < ed->table_parts_size; i++) - { - Edje_Real_Part *rp; - - rp = ed->table_parts[i]; - if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) - groups = eina_list_append(groups, - _edje_fetch(rp->swallowed_object)); - } + groups = ed->groups; EINA_LIST_FOREACH_SAFE(msgq, l, ln, em) { diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 476ec0aa50..9d5bb01377 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -1140,6 +1140,8 @@ struct _Edje int table_programs_size; unsigned int table_parts_size; + Eina_List *groups; + struct { Eina_Hash *text_class; Eina_Hash *color_class;