evas rectangle - ensure centers of rects that just move/resize dont rend
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 5 Oct 2015 09:30:34 +0000 (18:30 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 5 Oct 2015 09:30:34 +0000 (18:30 +0900)
calculating updates has been re-rendering centers fo solid rects if
the solid rects moves/resizes with a lot of overlap and objects
underneath changes - their changes show through. this fixes that

@fix

src/lib/evas/canvas/evas_object_rectangle.c

index b154bb5..a22c990 100644 (file)
@@ -277,33 +277,6 @@ evas_object_rectangle_render_pre(Evas_Object *eo_obj,
        evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, eo_obj, obj);
        goto done;
      }
-   /* if it changed geometry - and obviously not visibility or color */
-   /* calculate differences since we have a constant color fill */
-   /* we really only need to update the differences */
-   if ((obj->cur->geometry.x != obj->prev->geometry.x) ||
-       (obj->cur->geometry.y != obj->prev->geometry.y) ||
-       (obj->cur->geometry.w != obj->prev->geometry.w) ||
-       (obj->cur->geometry.h != obj->prev->geometry.h))
-     {
-       evas_rects_return_difference_rects(&obj->layer->evas->clip_changes,
-                                          obj->cur->geometry.x,
-                                          obj->cur->geometry.y,
-                                          obj->cur->geometry.w,
-                                          obj->cur->geometry.h,
-                                          obj->prev->geometry.x,
-                                          obj->prev->geometry.y,
-                                          obj->prev->geometry.w,
-                                          obj->prev->geometry.h);
-////   rl = evas_rects_return_difference_rects(obj->cur->cache.geometry.x,
-////                                           obj->cur->cache.geometry.y,
-////                                           obj->cur->cache.geometry.w,
-////                                           obj->cur->cache.geometry.h,
-////                                           obj->prev->cache.geometry.x,
-////                                           obj->prev->cache.geometry.y,
-////                                           obj->prev->cache.geometry.w,
-////                                           obj->prev->cache.geometry.h);
-       goto done;
-     }
    /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
    /* area so if there were updates for it they get wiped. don't do it if we */
    /* arent fully opaque and we are visible */
@@ -331,6 +304,33 @@ evas_object_rectangle_render_pre(Evas_Object *eo_obj,
          y + obj->layer->evas->framespace.y,
          w, h);
      }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* calculate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur->geometry.x != obj->prev->geometry.x) ||
+       (obj->cur->geometry.y != obj->prev->geometry.y) ||
+       (obj->cur->geometry.w != obj->prev->geometry.w) ||
+       (obj->cur->geometry.h != obj->prev->geometry.h))
+     {
+       evas_rects_return_difference_rects(&obj->layer->evas->clip_changes,
+                                          obj->cur->geometry.x,
+                                          obj->cur->geometry.y,
+                                          obj->cur->geometry.w,
+                                          obj->cur->geometry.h,
+                                          obj->prev->geometry.x,
+                                          obj->prev->geometry.y,
+                                          obj->prev->geometry.w,
+                                          obj->prev->geometry.h);
+////   rl = evas_rects_return_difference_rects(obj->cur->cache.geometry.x,
+////                                           obj->cur->cache.geometry.y,
+////                                           obj->cur->cache.geometry.w,
+////                                           obj->cur->cache.geometry.h,
+////                                           obj->prev->cache.geometry.x,
+////                                           obj->prev->cache.geometry.y,
+////                                           obj->prev->cache.geometry.w,
+////                                           obj->prev->cache.geometry.h);
+       goto done;
+     }
    done:
    evas_object_render_pre_effect_updates(&obj->layer->evas->clip_changes, eo_obj, is_v, was_v);
 }