forked from enlightenment/efl
evas map: Fix test case "Flip Page"
Since 9b7ac51943
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.
This commit is contained in:
parent
f3c9500a6d
commit
fd69113f6a
|
@ -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++)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue