Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/canvas


Modified Files:
        evas_layer.c evas_main.c evas_object_main.c 
        evas_object_smart.c 


Log Message:


logic problem on evas_free(). shoudl be fixed now... :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_layer.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_layer.c        15 Dec 2002 00:33:57 -0000      1.3
+++ evas_layer.c        10 Jan 2003 05:38:47 -0000      1.4
@@ -45,6 +45,20 @@
 }
 
 void
+evas_layer_pre_free(Evas_Layer *lay)
+{
+   Evas_Object_List *l;
+   
+   for (l = (Evas_Object_List *)lay->objects; l; l = l->next)
+     {
+       Evas_Object *obj;
+       
+       obj = (Evas_Object *)l;
+       evas_object_del(obj);
+     }
+}
+
+void
 evas_layer_free(Evas_Layer *lay)
 {
    while (lay->objects)
@@ -52,7 +66,6 @@
        Evas_Object *obj;
        
        obj = (Evas_Object *)lay->objects;
-       if (obj->smart.smart) evas_object_smart_del(obj);       
        evas_object_free(obj, 0);
      }
    free(lay);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_main.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- evas_main.c 26 Nov 2002 05:25:02 -0000      1.2
+++ evas_main.c 10 Jan 2003 05:38:47 -0000      1.3
@@ -72,13 +72,19 @@
 void
 evas_free(Evas *e)
 {
+   Evas_Object_List *l;
+   
    MAGIC_CHECK(e, Evas, MAGIC_EVAS);
    return;
    MAGIC_CHECK_END();
 
-   evas_object_font_path_clear(e);
-   
-   e->pointer.object.in = evas_list_free(e->pointer.object.in);
+   for (l = (Evas_Object_List *)(e->layers); l; l = l->next)
+     {
+       Evas_Layer *lay;
+       
+       lay = (Evas_Layer *)l;
+       evas_layer_pre_free(lay);
+     }
    while (e->layers)
      {
        Evas_Layer *lay;
@@ -87,6 +93,9 @@
        evas_layer_del(lay);
        evas_layer_free(lay);
      }
+   
+   evas_object_font_path_clear(e);   
+   e->pointer.object.in = evas_list_free(e->pointer.object.in);
    
    if (e->name_hash) evas_hash_free(e->name_hash);
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_main.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- evas_object_main.c  5 Jan 2003 12:55:37 -0000       1.6
+++ evas_object_main.c  10 Jan 2003 05:38:47 -0000      1.7
@@ -422,6 +422,8 @@
    evas_object_change(obj);
    obj->delete_me = 1;
    if (obj->smart.smart) evas_object_smart_del(obj);
+   evas_object_smart_cleanup(obj);
+   obj->smart.smart = NULL;
 }
 
 void
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_smart.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- evas_object_smart.c 10 Jan 2003 04:58:51 -0000      1.2
+++ evas_object_smart.c 10 Jan 2003 05:38:47 -0000      1.3
@@ -238,8 +238,8 @@
    Evas_Smart *s;
    
    s = obj->smart.smart;
-   if (obj->smart.parent) evas_object_smart_member_del(obj);
    if ((s) && (s->func_del)) s->func_del(obj);
+   if (obj->smart.parent) evas_object_smart_member_del(obj);
    if (s) evas_object_smart_unuse(s);
 }
 




-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to