evas: fix garbage with left over mapped smart object.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 17 Jul 2012 03:35:53 +0000 (03:35 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 17 Jul 2012 03:35:53 +0000 (03:35 +0000)
This fix the bug reported by Bruno Dilly.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@73944 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
NEWS
src/lib/canvas/evas_map.c
src/lib/canvas/evas_object_main.c

index 18cf412..247fc54 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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 (file)
--- 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.
index afa433b..23c8de1 100644 (file)
@@ -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);
 }
index e0e6f0a..44eb6bd 100644 (file)
@@ -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,