hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a76e751eb471359ae3693d5123182d7d6a397be4

commit a76e751eb471359ae3693d5123182d7d6a397be4
Author: ChunEon Park <her...@hermet.pe.kr>
Date:   Mon Jan 6 13:54:58 2014 +0900

    evas - fixed side effect caused by f4d24e962dba33bef8f990ce3359c06eed8771d0
    
    since the map_changed is reset right after the map is updated,
    it could not decide to redraw the map surface properly.
    
    now map_update() returns the value to redraw the map surface properly.
---
 src/lib/evas/canvas/evas_map.c      | 14 ++++++++++----
 src/lib/evas/canvas/evas_render.c   |  3 ++-
 src/lib/evas/include/evas_private.h |  2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/lib/evas/canvas/evas_map.c b/src/lib/evas/canvas/evas_map.c
index f10cde0..6ef034a 100644
--- a/src/lib/evas/canvas/evas_map.c
+++ b/src/lib/evas/canvas/evas_map.c
@@ -1217,7 +1217,11 @@ evas_map_util_clockwise_get(Evas_Map *m)
    return EINA_FALSE;
 }
 
-void
+
+/****************************************************************************/
+/* If the return value is true, the map surface should be redrawn.          */
+/****************************************************************************/
+Eina_Bool
 evas_object_map_update(Evas_Object *eo_obj,
                        int x, int y,
                        int imagew, int imageh,
@@ -1227,7 +1231,7 @@ evas_object_map_update(Evas_Object *eo_obj,
    const Evas_Map_Point *p, *p_end;
    RGBA_Map_Point *pts, *pt;
 
-   if (!obj) return;
+   if (!obj) return EINA_FALSE;
    if (obj->map->spans)
      {
         if (obj->map->spans->x != x || obj->map->spans->y != y ||
@@ -1240,7 +1244,7 @@ evas_object_map_update(Evas_Object *eo_obj,
         obj->changed_map = EINA_TRUE;
      }
 
-   if (!obj->changed_map) return;
+   if (!obj->changed_map) return EINA_FALSE;
 
    if (obj->map->cur.map && obj->map->spans && obj->map->cur.map->count != 
obj->map->spans->count)
      {
@@ -1264,7 +1268,7 @@ evas_object_map_update(Evas_Object *eo_obj,
         EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
      }
 
-   if (!obj->map->spans) return;
+   if (!obj->map->spans) return EINA_FALSE;
 
    EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, 
map_write)
      {
@@ -1319,4 +1323,6 @@ evas_object_map_update(Evas_Object *eo_obj,
    // Request engine to update it's point
 
    obj->changed_map = EINA_FALSE;
+
+   return obj->changed_pchange;
 }
diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index a6b5768..2c3c336 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1227,7 +1227,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object 
*eo_obj,
              RD("      }\n");
              return clean_them;
           }
-        evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
+
+        changed = evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
 
         if (obj->map->surface)
           {
diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index bf2bb3f..a3cc06b 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1262,7 +1262,7 @@ void evas_render_object_recalc(Evas_Object *obj);
 
 Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
 Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, 
Evas_Coord *mx, Evas_Coord *my, int grab);
-void evas_object_map_update(Evas_Object *obj, int x, int y, int imagew, int 
imageh, int uvw, int uvh);
+Eina_Bool evas_object_map_update(Evas_Object *obj, int x, int y, int imagew, 
int imageh, int uvw, int uvh);
 
 Eina_List *evas_module_engine_list(void);
 

-- 


Reply via email to