forked from enlightenment/efl
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:
parent
8d78e67870
commit
15dd911de3
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue