forked from enlightenment/efl
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:
parent
6baaab4b21
commit
81519b195f
|
@ -361,7 +361,6 @@ _evas_wrap_del(Evas_Object **eo, Evas_Object_Protected_Data *pd)
|
||||||
if (!*eo) return ;
|
if (!*eo) return ;
|
||||||
if (pd && pd->legacy.ctor) evas_object_del(*eo);
|
if (pd && pd->legacy.ctor) evas_object_del(*eo);
|
||||||
else efl_del(*eo);
|
else efl_del(*eo);
|
||||||
*eo = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define _EVAS_COLOR_CLAMP(x, y) do { \
|
#define _EVAS_COLOR_CLAMP(x, y) do { \
|
||||||
|
|
Loading…
Reference in New Issue