From edaeefa288e684acc98646fbc703b3a5fc75ebad Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 11 Nov 2011 05:56:40 +0000 Subject: [PATCH] fix another evas map clip issue! hooray! never ending list! SVN revision: 65044 --- .../evas/src/lib/canvas/evas_object_image.c | 21 ++++++++++++++----- legacy/evas/src/lib/canvas/evas_render.c | 19 +++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_object_image.c b/legacy/evas/src/lib/canvas/evas_object_image.c index eadcfb3372..7f757a6280 100644 --- a/legacy/evas/src/lib/canvas/evas_object_image.c +++ b/legacy/evas/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/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c index 37275bb728..0abee97514 100644 --- a/legacy/evas/src/lib/canvas/evas_render.c +++ b/legacy/evas/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