e_comp_hwc_deactive_set(disable);
}
+static Eina_Bool
+_e_desk_check_map_changed(const Evas_Map *old_map, Evas_Map *new_map)
+{
+ int i;
+ double old_u, old_v;
+ double new_u, new_v;
+ int old_x, old_y, old_z;
+ int new_x, new_y, new_z;
+ Eina_Bool is_changed = EINA_FALSE;
+
+ if (!old_map)
+ return EINA_TRUE;
+
+ for (i = 0; i < 4; i++)
+ {
+ old_u = old_v = new_u = new_v = 0;
+ old_x = old_y = old_z = new_x = new_y = new_z = 0;
+
+ evas_map_point_image_uv_get(old_map, i, &old_u, &old_v);
+ evas_map_point_image_uv_get(new_map, i, &new_u, &new_v);
+ if ((old_u != new_u) || (old_v != new_v))
+ {
+ is_changed = EINA_TRUE;
+ break;
+ }
+
+ evas_map_point_coord_get(old_map, i, &old_x, &old_y, &old_z);
+ evas_map_point_coord_get(new_map, i, &new_x, &new_y, &new_z);
+ if ((old_x != new_x) || (old_y != new_y) || (old_z != new_z))
+ {
+ is_changed = EINA_TRUE;
+ break;
+ }
+ }
+
+ return is_changed;
+}
+
static void
_e_desk_object_zoom(Evas_Object *obj, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
{
Evas_Map *map;
+ const Evas_Map *old_map;
+ Eina_Bool is_map_changed = EINA_FALSE;
Eina_Bool enabled;
if (!obj) return;
evas_map_util_object_move_sync_set(map, EINA_TRUE);
evas_map_util_points_populate_from_object(map, obj);
evas_map_util_zoom(map, zoomx, zoomy, cx, cy);
- evas_object_map_set(obj, map);
+
+ old_map = evas_object_map_get(obj);
+ is_map_changed = _e_desk_check_map_changed(old_map, map);
+ if (is_map_changed)
+ evas_object_map_set(obj, map);
+
enabled = ((zoomx != 1.0) || (zoomy != 1.0));
evas_object_map_enable_set(obj, enabled);
evas_map_free(map);