fix another evas map clip issue! hooray! never ending list!
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 11 Nov 2011 05:56:40 +0000 (05:56 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 11 Nov 2011 05:56:40 +0000 (05:56 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@65044 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_object_image.c
src/lib/canvas/evas_render.c

index eadcfb3..7f757a6 100644 (file)
@@ -3379,11 +3379,22 @@ evas_object_image_render_pre(Evas_Object *obj)
    if (evas_object_is_visible(obj) &&
        evas_object_is_opaque(obj))
      {
-         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);
+        Evas_Coord x, y, w, h;
+        
+        x = obj->cur.cache.clip.x;
+        y = obj->cur.cache.clip.y;
+        w = obj->cur.cache.clip.w;
+        h = obj->cur.cache.clip.h;
+        if (obj->cur.clipper)
+          {
+             RECTS_CLIP_TO_RECT(x, y, w, h,
+                                obj->cur.clipper->cur.cache.clip.x,
+                                obj->cur.clipper->cur.cache.clip.y,
+                                obj->cur.clipper->cur.cache.clip.w,
+                                obj->cur.clipper->cur.cache.clip.h);
+          }
+        e->engine.func->output_redraws_rect_del(e->engine.data.output,
+                                                x, y, w, h);
      }
    done:
    evas_object_render_pre_effect_updates(&e->clip_changes, obj, is_v, was_v);
index 37275bb..0abee97 100644 (file)
@@ -134,11 +134,22 @@ _evas_render_prev_cur_clip_cache_add(Evas *e, Evas_Object *obj)
 static void
 _evas_render_cur_clip_cache_del(Evas *e, Evas_Object *obj)
 {
+   Evas_Coord x, y, w, h;
+   
+   x = obj->cur.cache.clip.x;
+   y = obj->cur.cache.clip.y;
+   w = obj->cur.cache.clip.w;
+   h = obj->cur.cache.clip.h;
+   if (obj->cur.clipper)
+     {
+        RECTS_CLIP_TO_RECT(x, y, w, h,
+                           obj->cur.clipper->cur.cache.clip.x,
+                           obj->cur.clipper->cur.cache.clip.y,
+                           obj->cur.clipper->cur.cache.clip.w,
+                           obj->cur.clipper->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);
+                                           x, y, w, h);
 }
 
 static void