summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2018-07-10 11:07:53 +0900
committerSangHyeon Jade Lee <sh10233.lee@samsung.com>2018-07-12 11:34:47 +0900
commita9a987077be7e64f93a2a824f9b936d593b4ff2f (patch)
tree3147288ebcad5335b9e8952695d2f6bc8143d96e
parent07855c276dc8d550b4d3b6c5c17c8090c3d840d6 (diff)
downloadefl-a9a987077be7e64f93a2a824f9b936d593b4ff2f.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