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) --