fix memory leak introduced with recent layer destruction.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 07:17:40 +0000 (07:17 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 20 Jun 2009 07:17:40 +0000 (07:17 +0000)
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.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@41123 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_layer.c
src/lib/canvas/evas_main.c
src/lib/include/evas_private.h

index 241de45..9f0041d 100644 (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);
      }
 }
 
index 51e1e9e..ccf5dd1 100644 (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--;
index 1fd41bf..c82b417 100644 (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);