From b67703d8ec2674ad9368d4c4b1d0089b164d5c98 Mon Sep 17 00:00:00 2001 From: raster Date: Fri, 11 Nov 2011 05:56:40 +0000 Subject: [PATCH] fix another evas map clip issue! hooray! never ending list! git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@65044 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/canvas/evas_object_image.c | 21 ++++++++++++++++----- src/lib/canvas/evas_render.c | 19 +++++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/lib/canvas/evas_object_image.c b/src/lib/canvas/evas_object_image.c index eadcfb3..7f757a6 100644 --- a/src/lib/canvas/evas_object_image.c +++ b/src/lib/canvas/evas_object_image.c @@ -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); diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c index 37275bb..0abee97 100644 --- a/src/lib/canvas/evas_render.c +++ b/src/lib/canvas/evas_render.c @@ -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 -- 2.7.4