summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2018-07-10 11:07:53 +0900
committerHermet Park <hermetpark@gmail.com>2018-07-10 11:07:53 +0900
commit78cd61034185f07779d70163a38f5ffdffe5507b (patch)
tree485092b47c53a0d9a4e73975efe0f6d281f1b47c
parent53fa0c1520eb070ca8b29611fde92c0036a788ee (diff)
downloadefl-78cd61034185f07779d70163a38f5ffdffe5507b.tar.gz
edje: clean up internal objects during invalidate
Summary: these objects are destroyed when invalidate is called as a result of the evas smart object class destroying the smart object at this time ref D6222 Reviewers: bu5hm4n, devilhorns Subscribers: cedric, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6540
-rw-r--r--src/lib/edje/edje_smart.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c
index 29d042c40d..a3791a041c 100644
--- a/src/lib/edje/edje_smart.c
+++ b/src/lib/edje/edje_smart.c
@@ -54,9 +54,9 @@ _efl_canvas_layout_efl_object_invalidate(Eo *obj, Edje *ed)
{
_edje_file_callbacks_del(ed, NULL);
- efl_invalidate(efl_super(obj, MY_CLASS));
-
- //invalidate is done, this means the legacy evas deletion event is called.
+ /* after invalidate is called, all internal objects are destroyed as a result
+ * of being unparented. do cleanups here to avoid leaking
+ */
for (int i = 0; i < ed->table_parts_size; ++i)
{
Edje_Real_Part *rp = ed->table_parts[i];
@@ -74,6 +74,8 @@ _efl_canvas_layout_efl_object_invalidate(Eo *obj, Edje *ed)
break;
}
}
+
+ efl_invalidate(efl_super(obj, MY_CLASS));
}
EOLIAN static void