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;

Attachment: 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

Reply via email to