fix memory leak introduced with recent layer destruction.

also rename evas_layer_free() to evas_layer_free_objects() as what it
do now, make _evas_layer_free() as static and use it both cases.



SVN revision: 41123
This commit is contained in:
Gustavo Sverzut Barbieri 2009-06-20 07:17:40 +00:00
parent 324fd7b2ca
commit 1c0ca5dfbb
3 changed files with 13 additions and 5 deletions

View File

@ -1,6 +1,8 @@
#include "evas_common.h"
#include "evas_private.h"
static void _evas_layer_free(Evas_Layer *lay);
void
evas_object_inject(Evas_Object *obj, Evas *e)
{
@ -31,7 +33,7 @@ evas_object_release(Evas_Object *obj, int clean_layer)
if (obj->layer->usage <= 0)
{
evas_layer_del(obj->layer);
evas_layer_free(obj->layer);
_evas_layer_free(obj->layer);
}
}
obj->layer = NULL;
@ -49,6 +51,12 @@ evas_layer_new(Evas *e)
return lay;
}
static void
_evas_layer_free(Evas_Layer *lay)
{
free(lay);
}
void
evas_layer_pre_free(Evas_Layer *lay)
{
@ -62,7 +70,7 @@ evas_layer_pre_free(Evas_Layer *lay)
}
void
evas_layer_free(Evas_Layer *lay)
evas_layer_free_objects(Evas_Layer *lay)
{
while (lay->objects)
{
@ -82,7 +90,7 @@ evas_layer_clean(Evas *e)
{
tmp = e->layers;
evas_layer_del(tmp);
free(tmp);
_evas_layer_free(tmp);
}
}

View File

@ -158,7 +158,7 @@ evas_free(Evas *e)
}
}
EINA_INLIST_FOREACH(e->layers, lay)
evas_layer_free(lay);
evas_layer_free_objects(lay);
evas_layer_clean(e);
e->walking_list--;

View File

@ -717,7 +717,7 @@ void evas_object_clip_dirty(Evas_Object *obj);
void evas_object_recalc_clippees(Evas_Object *obj);
Evas_Layer *evas_layer_new(Evas *e);
void evas_layer_pre_free(Evas_Layer *lay);
void evas_layer_free(Evas_Layer *lay);
void evas_layer_free_objects(Evas_Layer *lay);
void evas_layer_clean(Evas *e);
Evas_Layer *evas_layer_find(Evas *e, short layer_num);
void evas_layer_add(Evas_Layer *lay);