Hello. I'm seeing some memleaks while using Evas' buffer engine. After investigation, it seems that evas_free does nothing and returns immediately if the canvas has no callbacks, which is what happens with the buffer engine.
The attached patch seems to do the trick. However, as I don't know that much Evas' internals, I thought it'd be better to ask whether it's correct or I'm mistaken before committing. So please comment. Cheers! Chidambar
Index: evas/src/lib/canvas/evas_main.c
===================================================================
--- evas/src/lib/canvas/evas_main.c (revision 52730)
+++ evas/src/lib/canvas/evas_main.c (working copy)
@@ -202,19 +202,22 @@
if (e->walking_list == 0) evas_render_idle_flush(e);
if (e->walking_list > 0) return;
- if (!e->callbacks) return;
- if (e->callbacks->deletions_waiting) return;
-
- e->callbacks->deletions_waiting = 0;
- evas_event_callback_list_post_free(&e->callbacks->callbacks);
- if (!e->callbacks->callbacks)
+
+ if (e->callbacks)
{
- free(e->callbacks);
- e->callbacks = NULL;
+ if (e->callbacks->deletions_waiting) return;
+
+ e->callbacks->deletions_waiting = 0;
+ evas_event_callback_list_post_free(&e->callbacks->callbacks);
+ if (!e->callbacks->callbacks)
+ {
+ free(e->callbacks);
+ e->callbacks = NULL;
+ }
+
+ _evas_post_event_callback_free(e);
}
- _evas_post_event_callback_free(e);
-
del = 1;
e->walking_list++;
e->cleanup = 1;
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
