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:
parent
324fd7b2ca
commit
1c0ca5dfbb
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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--;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue