Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


Modified Files:
        evas_object_main.c evas_render.c evas_stack.c 


Log Message:


fix restack draw bug

===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_main.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -3 -r1.37 -r1.38
--- evas_object_main.c  27 Oct 2005 02:44:36 -0000      1.37
+++ evas_object_main.c  27 Oct 2005 04:25:30 -0000      1.38
@@ -296,14 +296,14 @@
 evas_object_is_active(Evas_Object *obj)
 {
    if (obj->smart.smart) return 0;
-   if ((evas_object_is_in_output_rect(obj, 0, 0,
+   if ((evas_object_is_visible(obj) ||
+       evas_object_was_visible(obj)) &&
+       (evas_object_is_in_output_rect(obj, 0, 0,
                                      obj->layer->evas->output.w,
                                      obj->layer->evas->output.h) ||
        evas_object_was_in_output_rect(obj, 0, 0,
                                       obj->layer->evas->output.w,
-                                      obj->layer->evas->output.h)) &&
-       (evas_object_is_visible(obj) ||
-       evas_object_was_visible(obj)))
+                                      obj->layer->evas->output.h)))
      return 1;
    return 0;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_render.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- evas_render.c       27 Oct 2005 02:44:36 -0000      1.10
+++ evas_render.c       27 Oct 2005 04:25:30 -0000      1.11
@@ -73,7 +73,6 @@
    /* build active object list */
    if (evas_object_is_active(obj))
      *active_objects = evas_list_append(*active_objects, obj);
-   /* something changed... maybe... */
    if (restack)
      {
        obj->restack = 1;
@@ -85,6 +84,7 @@
          {
             Evas_Object_List *l;
             
+            obj->func->render_pre(obj);
             for (l = obj->smart.contained; l; l = l->next)
               {
                  Evas_Object *obj2;
@@ -94,7 +94,6 @@
                                                     active_objects,
                                                     restack_objects, 
obj->restack);
               }
-            
          }
        else
          {
@@ -105,7 +104,6 @@
               obj->func->render_pre(obj);
          }
      }
-   /* nothing changed at all */
    else
      {
        if ((!obj->clip.clipees) && (obj->delete_me == 0))
@@ -114,6 +112,7 @@
               {
                  Evas_Object_List *l;
                  
+                 obj->func->render_pre(obj);
                  for (l = obj->smart.contained; l; l = l->next)
                    {
                       Evas_Object *obj2;
@@ -136,8 +135,8 @@
                                                            
obj->cur.cache.clip.h);
               }
          }
+       obj->restack = 0;
      }
-   obj->restack = 0;
 }
 
 static void
@@ -368,22 +367,24 @@
          }
        /* if the object is flagged for deletion - note it */
        if (obj->delete_me == 2)
-         delete_objects = evas_list_append(delete_objects, obj);
-       if (obj->delete_me) obj->delete_me ++;
+         {
+            delete_objects = evas_list_append(delete_objects, obj);
+         }
+       else if (obj->delete_me != 0) obj->delete_me++;
      }
+   /* free our obscuring object list */
+   evas_list_free(obscuring_objects_orig);
+   /* free our active object list */
+   evas_list_free(active_objects);
    /* delete all objects flagged for deletion now */
    while (delete_objects)
      {
        Evas_Object *obj;
 
        obj = (Evas_Object *)(delete_objects->data);
-       delete_objects = evas_list_remove(delete_objects, obj);
+       delete_objects = evas_list_remove_list(delete_objects, delete_objects);
        evas_object_free(obj, 1);
      }
-   /* free our obscuring object list */
-   evas_list_free(obscuring_objects_orig);
-   /* free our active object list */
-   evas_list_free(active_objects);
    e->changed = 0;
    e->viewport.changed = 0;
    e->output.changed = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_stack.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- evas_stack.c        27 Oct 2005 02:44:36 -0000      1.19
+++ evas_stack.c        27 Oct 2005 04:25:30 -0000      1.20
@@ -78,6 +78,7 @@
      }
    obj->restack = 1;
    evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
    if (obj->layer->evas->events_frozen <= 0)
      {
        if (!evas_event_passes_through(obj))
@@ -96,7 +97,6 @@
               }
          }
      }
-   evas_object_inform_call_restack(obj);
 }
 
 /**
@@ -137,6 +137,7 @@
      }
    obj->restack = 1;
    evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
    if (obj->layer->evas->events_frozen <= 0)
      {
        if (!evas_event_passes_through(obj))
@@ -155,7 +156,6 @@
               }
          }
      }
-   evas_object_inform_call_restack(obj);
 }
 
 /**
@@ -213,6 +213,7 @@
      }
    obj->restack = 1;
    evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
    if (obj->layer->evas->events_frozen <= 0)
      {
        if (!evas_event_passes_through(obj))
@@ -231,7 +232,6 @@
               }
          }
      }
-   evas_object_inform_call_restack(obj);
 }
 
 /**
@@ -289,6 +289,7 @@
      }
    obj->restack = 1;
    evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
    if (obj->layer->evas->events_frozen <= 0)
      {
        if (!evas_event_passes_through(obj))
@@ -307,7 +308,6 @@
               }
          }
      }
-   evas_object_inform_call_restack(obj);
 }
 
 /**




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to