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
This commit is contained in:
Mike Blumenkrantz 2018-07-10 11:07:53 +09:00 committed by Hermet Park
parent 53fa0c1520
commit 78cd610341
1 changed files with 5 additions and 3 deletions

View File

@ -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