jpeg pushed a commit to branch master.

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

commit fd69113f6a9e2735a3e1ad2d0830982c722f453e
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Mon Apr 10 19:38:56 2017 +0900

    evas map: Fix test case "Flip Page"
    
    Since 9b7ac51943ba0d6391b75cf evas map tries to avoid recalculating
    stuff when the map parameters have not changed. Unfortunately the
    code in elementary_test -to "Flip Page" was badly written. It was
    modifying a constant's internal value (after ugly cast). So the
    memcmp() and all other checks would return successfully, as the
    exact same pointer was being compared to itself.
    
    So, I've fixed the comparison by adding some forgotten parameters
    (perspective) but most importantly I fixed the map API usage in the
    test case.
---
 src/bin/elementary/test_flip_page.c | 4 ++--
 src/lib/evas/canvas/evas_map.c      | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/bin/elementary/test_flip_page.c 
b/src/bin/elementary/test_flip_page.c
index 2aebf17..4dc2734 100644
--- a/src/bin/elementary/test_flip_page.c
+++ b/src/bin/elementary/test_flip_page.c
@@ -130,7 +130,7 @@ _slice_apply(State *st, Slice *sl,
 static void
 _slice_3d(State *st EINA_UNUSED, Slice *sl, Evas_Coord x, Evas_Coord y, 
Evas_Coord w, Evas_Coord h)
 {
-   Evas_Map *m = (Evas_Map *)evas_object_map_get(sl->obj);
+   Evas_Map *m = evas_map_dup(evas_object_map_get(sl->obj));
    int i;
 
    if (!m) return;
@@ -145,6 +145,7 @@ _slice_3d(State *st EINA_UNUSED, Slice *sl, Evas_Coord x, 
Evas_Coord y, Evas_Coo
    if (evas_map_util_clockwise_get(m)) evas_object_show(sl->obj);
    else evas_object_hide(sl->obj);
    evas_object_map_set(sl->obj, m);
+   evas_map_free(m);
 }
 
 static void
@@ -663,7 +664,6 @@ _state_update(State *st)
              num++;
           }
      }
-
    num = 0;
    for (i = 0; i < st->slices_w; i++)
      {
diff --git a/src/lib/evas/canvas/evas_map.c b/src/lib/evas/canvas/evas_map.c
index b3207e9..7f8e794 100644
--- a/src/lib/evas/canvas/evas_map.c
+++ b/src/lib/evas/canvas/evas_map.c
@@ -556,22 +556,25 @@ evas_object_map_set(Evas_Object *eo_obj, const Evas_Map 
*map)
 {
    Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj);
 
+   evas_object_async_block(obj);
+
    // check if the new map and current map attributes are same
    if (map && obj->map->cur.map &&
        (obj->map->cur.map->alpha == map->alpha) &&
        (obj->map->cur.map->smooth == map->smooth) &&
        (obj->map->cur.map->move_sync.enabled == map->move_sync.enabled) &&
+       (obj->map->cur.map->move_sync.diff_x == map->move_sync.diff_x) &&
+       (obj->map->cur.map->move_sync.diff_y == map->move_sync.diff_y) &&
        (obj->map->cur.map->count == map->count))
      {
         const Evas_Map_Point *p1, *p2;
         p1 = obj->map->cur.map->points;
         p2 = map->points;
-        if (memcmp(p1, p2, sizeof(Evas_Map_Point) *
-                   map->count) == 0)
+        if (!memcmp(p1, p2, sizeof(Evas_Map_Point) * map->count) &&
+            !memcmp(&map->persp, &obj->map->cur.map->persp, 
sizeof(map->persp)))
           return;
      }
 
-   evas_object_async_block(obj);
    if ((!map) || (map->count < 4))
      {
         if (obj->map->surface)

-- 


Reply via email to