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 enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel