evas: make objects again delete correctly

Summary:
what here was done was fundamentally wrong, deleting the pd->object
field of a evas object after a efl_del / evas_object_del is completly
wrong. evas object lifetimes are controller with eo_manual_free, this
means, they are still alive, even after you called evas_object_del on
them. removing pd->object results in eo_menual_free calls to NULL
objects and leaking the object carrying the private data. Overall,
breaking this pd->object field and unsetting it is a very bad idea, as
its the only way that evas cleansup the object correctly.
This brings down the number of ui related leaked objects on shutdowns to
0. (YEY :))
This also fixes weird error messages on app shutdown.

fixes T6964

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T6964

Differential Revision: https://phab.enlightenment.org/D6290
This commit is contained in:
Marcel Hollerbach 2018-06-14 14:23:28 -05:00 committed by Stephen 'Okra' Houston
parent 6baaab4b21
commit 81519b195f
1 changed files with 0 additions and 1 deletions

View File

@ -361,7 +361,6 @@ _evas_wrap_del(Evas_Object **eo, Evas_Object_Protected_Data *pd)
if (!*eo) return ;
if (pd && pd->legacy.ctor) evas_object_del(*eo);
else efl_del(*eo);
*eo = NULL;
}
#define _EVAS_COLOR_CLAMP(x, y) do { \