From: Chidambar 'ilLogict' Zinnoury <illogict@online.fr>

Subject: [E-devel] [tentative patch] evas memleak when no callbacks

 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.
    


SVN revision: 52769
This commit is contained in:
Chidambar 'ilLogict' Zinnoury 2010-09-26 02:27:01 +00:00 committed by Carsten Haitzler
parent 8d78e67870
commit 15dd911de3
1 changed files with 13 additions and 10 deletions

View File

@ -202,19 +202,22 @@ evas_free(Evas *e)
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;