From 5cb5baa7d42712f9e0db8dfaa0485e2d833e4d83 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 30 Apr 2017 18:29:19 +0200 Subject: [PATCH] ClutterActor: Optimize away idempotent scale/position updates If the actor results in the same scale/position, there's no need to trigger a transition. https://bugzilla.gnome.org/show_bug.cgi?id=782344 --- clutter/clutter/clutter-actor.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 6954f0396..dbb202f9c 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -4828,7 +4828,8 @@ clutter_actor_set_scale_factor (ClutterActor *self, g_assert (pspec != NULL); g_assert (scale_p != NULL); - _clutter_actor_create_transition (self, pspec, *scale_p, factor); + if (*scale_p != factor) + _clutter_actor_create_transition (self, pspec, *scale_p, factor); } static inline void @@ -10263,9 +10264,10 @@ clutter_actor_set_position (ClutterActor *self, cur_position.x = clutter_actor_get_x (self); cur_position.y = clutter_actor_get_y (self); - _clutter_actor_create_transition (self, obj_props[PROP_POSITION], - &cur_position, - &new_position); + if (!clutter_point_equals (&cur_position, &new_position)) + _clutter_actor_create_transition (self, obj_props[PROP_POSITION], + &cur_position, + &new_position); } /**