Enlightenment CVS committal

Author  : cedric
Project : e17
Module  : libs/evas

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


Modified Files:
        evas_render.c 


Log Message:
Cleanly handle evas_object_release.


===================================================================
RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_render.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- evas_render.c       12 Jun 2008 13:22:26 -0000      1.31
+++ evas_render.c       17 Jun 2008 09:04:12 -0000      1.32
@@ -244,53 +244,62 @@
 
        obj = _evas_array_get(pending_objects, i);
 
+       if (!obj->layer) goto clean_stuff;
+
        evas_object_clip_recalc(obj);
        is_active = evas_object_is_active(obj);
 
-       if (!is_active && !obj->is_active && !obj->render_pre && !obj->rect_del)
-         ok = 1;
-       else
-         if (obj->is_active == is_active)
-           {
-              if (obj->changed)
-                {
-                   if (obj->smart.smart)
+       if (!is_active &&
+           !obj->is_active &&
+           !obj->render_pre &&
+           !obj->rect_del)
+         {
+            ok = 1;
+            goto clean_stuff;
+         }
+
+       if (obj->is_active == is_active)
+         {
+            if (obj->changed)
+              {
+                 if (obj->smart.smart)
+                   {
+                      if (obj->render_pre
+                          || obj->rect_del)
+                        ok = 1;
+                   }
+                 else
+                   if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
+                       ((evas_object_is_visible(obj) && 
(!obj->cur.have_clipees)) ||
+                        (evas_object_was_visible(obj) && 
(!obj->prev.have_clipees))))
                      {
-                        if (obj->render_pre
-                            || obj->rect_del)
+                        if (!(obj->render_pre
+                              || obj->rect_del))
                           ok = 1;
                      }
                    else
-                     if ((is_active) && (obj->restack) && (!obj->clip.clipees) 
&&
+                     if (is_active && (!obj->clip.clipees) &&
                          ((evas_object_is_visible(obj) && 
(!obj->cur.have_clipees)) ||
                           (evas_object_was_visible(obj) && 
(!obj->prev.have_clipees))))
                        {
-                          if (!(obj->render_pre
-                                || obj->rect_del))
+                          if (obj->render_pre
+                              || obj->rect_del)
                             ok = 1;
                        }
-                     else
-                       if (is_active && (!obj->clip.clipees) &&
-                           ((evas_object_is_visible(obj) && 
(!obj->cur.have_clipees)) ||
-                            (evas_object_was_visible(obj) && 
(!obj->prev.have_clipees))))
-                         {
-                            if (obj->render_pre
-                                || obj->rect_del)
-                              ok = 1;
-                         }
-                }
-              else
-                {
-                   if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
-                       (!obj->cur.have_clipees || 
(evas_object_was_visible(obj) && (!obj->prev.have_clipees)))
-                       && evas_object_is_opaque(obj) && 
evas_object_is_visible(obj))
-                     if (obj->rect_del || obj->smart.smart)
-                       {
-                          ok = 1;
-                       }
-                }
-           }
+              }
+            else
+              {
+                 if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
+                     (!obj->cur.have_clipees || (evas_object_was_visible(obj) 
&& (!obj->prev.have_clipees)))
+                     && evas_object_is_opaque(obj) && 
evas_object_is_visible(obj))
+                   if (obj->rect_del || obj->smart.smart)
+                     {
+                        ok = 1;
+                     }
+              }
+         }
 
+     clean_stuff:
        if (!ok)
          {
             evas_array_clean(&e->active_objects);
@@ -311,7 +320,8 @@
    Evas_Object *obj;
 
    obj = data;
-   if (obj->delete_me) return 0;
+   if (!obj->layer) obj->changed = 0;
+   if (obj->delete_me) obj->changed = 0;
    return obj->changed;
 }
 



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to