path: root/src
diff options
authorMarcel Hollerbach <>2018-06-14 14:23:28 -0500
committerStephen 'Okra' Houston <>2018-06-14 14:23:28 -0500
commit81519b195f0488058b0773953b6af97ce28b3c3d (patch)
tree59a42fd20f5ee9292c69a3f871ce96364d2f3cd1 /src
parent6baaab4b215d3b8fa56e9bc037068d654ee7e6f5 (diff)
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:
Diffstat (limited to 'src')
1 files changed, 0 insertions, 1 deletions
diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x
index b3f1ae688a..7a2af7de1d 100644
--- a/src/lib/evas/include/evas_inline.x
+++ b/src/lib/evas/include/evas_inline.x
@@ -361,7 +361,6 @@ _evas_wrap_del(Evas_Object **eo, Evas_Object_Protected_Data *pd)
361 if (!*eo) return ; 361 if (!*eo) return ;
362 if (pd && pd->legacy.ctor) evas_object_del(*eo); 362 if (pd && pd->legacy.ctor) evas_object_del(*eo);
363 else efl_del(*eo); 363 else efl_del(*eo);
364 *eo = NULL;
365} 364}
366 365
367#define _EVAS_COLOR_CLAMP(x, y) do { \ 366#define _EVAS_COLOR_CLAMP(x, y) do { \