Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

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


Modified Files:
        evas_render.c 


Log Message:


some optimizations seem to have screwed up rendering in corner cases. fixed
by accounting for some of my new additions

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_render.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- evas_render.c       17 Apr 2003 12:05:00 -0000      1.3
+++ evas_render.c       25 Jun 2003 07:58:58 -0000      1.4
@@ -91,6 +91,7 @@
    MAGIC_CHECK_END();
    if (!e->changed) return NULL;
    
+/*   printf("REND\n");*/
    /* phase 1. add extra updates for changed objects */
    for (l = (Evas_Object_List *)e->layers; l; l = l->next)
      {
@@ -110,24 +111,38 @@
             /* something changed... maybe... */
             if (obj->changed)
               {
+/*               printf("change...\n");*/
                  if ((obj->restack) && 
                      (!obj->clip.clipees) &&
-                     evas_object_is_active(obj))                     
+                     (!obj->smart.smart) &&
+                     evas_object_is_active(obj))
                    restack_objects = evas_list_append(restack_objects, obj);
                  else
                    obj->func->render_pre(obj);
               }
-            /* nothng changed at all */
+            /* nothing changed at all */
             else
-              {
+              {                  
                  if (evas_object_is_opaque(obj) &&
                      evas_object_is_visible(obj) &&
+                     (!obj->smart.smart) &&
                      (!obj->clip.clipees))
+                     {
+/*                      
+                        printf("NOchange %s %i %i %ix%i\n",
+                               obj->type,
+                               obj->cur.cache.clip.x, 
+                               obj->cur.cache.clip.y, 
+                               obj->cur.cache.clip.w, 
+                               obj->cur.cache.clip.h);
+ */
                    e->engine.func->output_redraws_rect_del(e->engine.data.output,
                                                            obj->cur.cache.clip.x, 
                                                            obj->cur.cache.clip.y, 
                                                            obj->cur.cache.clip.w, 
                                                            obj->cur.cache.clip.h);
+
+                     }
               }
          }
      }
@@ -191,8 +206,13 @@
        Evas_Object *obj;
        
        obj = (Evas_Object *)(ll->data);
-       if (evas_object_is_opaque(obj) && evas_object_is_visible(obj) &&
-           (!obj->clip.clipees) && (obj->cur.color.a >= 255))
+       if (evas_object_is_opaque(obj) && 
+           evas_object_is_visible(obj) &&
+           (!obj->clip.clipees) && 
+           (obj->cur.visible) &&
+           (!obj->delete_me) &&
+           (obj->cur.cache.clip.visible) &&
+           (!obj->smart.smart))
          obscuring_objects = evas_list_append(obscuring_objects, obj);
      }
    /* save this list */
@@ -224,18 +244,21 @@
             if (evas_object_is_in_output_rect(obj, ux, uy, uw, uh))
               obscuring_objects = evas_list_append(obscuring_objects, obj);
          }
+/*     printf("Render area...\n");*/
        /* render all object that intersect with rect */
        for (ll = active_objects; ll; ll = ll->next)
          {
             Evas_Object *obj;
             Evas_List *l3;
             obj = (Evas_Object *)(ll->data);
+            
             /* if its in our outpout rect and it doesnt clip anything */
             if (evas_object_is_in_output_rect(obj, ux, uy, uw, uh) &&
                 (!obj->clip.clipees) &&
                 (obj->cur.visible) &&
                 (!obj->delete_me) &&
                 (obj->cur.cache.clip.visible) &&
+                (!obj->smart.smart) &&
                 (obj->cur.color.a > 0))
               {
                  int x, y, w, h;
@@ -259,6 +282,14 @@
                            Evas_Object *obj2;
                            
                            obj2 = (Evas_Object *)l3->data;
+/*                         
+                           printf("CUTOUT %p %s, %i %i %ix%i\n",
+                                  obj2, obj2->type,
+                                  obj2->cur.cache.clip.x,
+                                  obj2->cur.cache.clip.y,
+                                  obj2->cur.cache.clip.w,
+                                  obj2->cur.cache.clip.h);
+ */
                            e->engine.func->context_cutout_add(e->engine.data.output,
                                                               e->engine.data.context,
                                                               obj2->cur.cache.clip.x 
+ off_x,




-------------------------------------------------------
This SF.Net email is sponsored by: INetU
Attention Web Developers & Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to