Page MenuHomePhabricator

edje: clean up internal objects during invalidate
Needs RevisionPublic

Authored by zmike on Jul 9 2018, 1:35 PM.

Details

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

Diff Detail

Repository
rEFL core/efl
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
zmike created this revision.Jul 9 2018, 1:35 PM
zmike requested review of this revision.Jul 9 2018, 1:35 PM
Hermet accepted this revision.Jul 9 2018, 7:08 PM
This revision is now accepted and ready to land.Jul 9 2018, 7:08 PM
This revision was automatically updated to reflect the committed changes.

This is actaully wrong and breaks e!
efl_invalidate emits EVAS_OBJECT_DEL which is used in e to track the deletion of a comp element to delete the actual content, which breaks here, resulting in the comp element to be alive while the content is dead. (https://www.enlightenment.org/ss/display.php?image=e-5b4471a923e0d9.86433868.jpg)
The invalidation of the children is done AFTER the call to invalidate. Has finished (_efl_invalidate != efl_invalidate)!
Also, where is the evas smart object class destroying the smart object ? I figure you mean a efl_canvas_group object, which does nothing on invalidate ... Not too sure what the commit log means ...

jeyzu reopened this revision.Jul 10 2018, 2:17 AM
jeyzu added a subscriber: jeyzu.

This one has a very bad effect on e 38ae2285e
notification stays forever, clock surface does not disappear, position indicators stays forever ...

This revision is now accepted and ready to land.Jul 10 2018, 2:17 AM
Hermet requested changes to this revision.Jul 10 2018, 3:04 AM

let's see... @zmike.

This revision now requires changes to proceed.Jul 10 2018, 3:04 AM
zmike added a comment.Jul 10 2018, 4:35 AM

I'm going to try and write a unit test to mimic this usage.