From 8ed7ae7d989bbeaf5c905a35a129a836bb2d6dd9 Mon Sep 17 00:00:00 2001 From: cedric Date: Tue, 17 Jul 2012 03:35:53 +0000 Subject: [PATCH] evas: fix garbage with left over mapped smart object. This fix the bug reported by Bruno Dilly. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@73944 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- ChangeLog | 5 +++++ NEWS | 1 + src/lib/canvas/evas_map.c | 2 +- src/lib/canvas/evas_object_main.c | 4 ++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18cf412..247fc54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -884,3 +884,8 @@ 2012-07-16 Hermet (ChunEon Park) * Fixed to do pre render for the children of mapped object. + +2012-07-17 Cedric Bail + + * Fix garbage left by mapped smart object when they fly away from the canvas. + diff --git a/NEWS b/NEWS index 319e39e..8caf2b0 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,7 @@ Fixes: * Add missing files in the tarball. * Add svg rendering with Esvg * Don't accept broken map. + * Fix garbage left by mapped smart object when they fly away from the canvas. Removal: * Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE. diff --git a/src/lib/canvas/evas_map.c b/src/lib/canvas/evas_map.c index afa433b..23c8de1 100644 --- a/src/lib/canvas/evas_map.c +++ b/src/lib/canvas/evas_map.c @@ -104,6 +104,7 @@ _evas_map_calc_map_geometry(Evas_Object *obj) obj->cur.map->normal_geometry.y = yy1; obj->cur.map->normal_geometry.w = (x2 - x1); obj->cur.map->normal_geometry.h = (yy2 - yy1); + obj->changed_map = ch; if (ch) _evas_map_calc_geom_change(obj); } @@ -494,7 +495,6 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map) if (obj->cur.usemap) evas_object_mapped_clip_across_mark(obj); } - obj->changed_map = EINA_TRUE; _evas_map_calc_map_geometry(obj); } diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c index e0e6f0a..44eb6bd 100644 --- a/src/lib/canvas/evas_object_main.c +++ b/src/lib/canvas/evas_object_main.c @@ -93,7 +93,7 @@ evas_object_change(Evas_Object *obj) obj->changed_move = EINA_FALSE; } - if (obj->changed) return; + if (obj->changed) return; evas_render_object_recalc(obj); /* set changed flag on all objects this one clips too */ @@ -321,7 +321,7 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int i int evas_object_was_in_output_rect(Evas_Object *obj, int x, int y, int w, int h) { - if (obj->smart.smart) return 0; + if (obj->smart.smart && !obj->prev.map && !obj->prev.usemap) return 0; /* assumes coords have been recalced */ if ((RECTS_INTERSECT(x, y, w, h, obj->prev.cache.clip.x, -- 2.7.4