From d12dc993d19b180391327623bf0917c155d68460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Tue, 12 May 2020 11:40:49 +0200 Subject: [PATCH] window-actor: Allow syncing actor geometry while effect is running The size-change animation in gnome-shell needs to sync the window actors geometry during the animation, it currently does this by notifying the compositor that the animation was finished before it actually is. This causes a few bugs in Mutter though, since it will now emit the "effects-completed" signal on the window actor even though they aren't completed. To fix that, we need to decouple freezing and thawing of actor updates from window effects and allow gnome-shell to thaw actor updates before it notifies Mutter that the effect is completed. The first step for this is allowing to sync the actor geometry while an effect is active, this should be redundant since effects which actually need to inhibit those updates will freeze the actor anyway. Also a geometry change happening while another effect is active will kill the old effect anyway because MetaPluginManager kills all the active window effects before starting a new one; so the new size-change effect for any geometry change is going to kill the current effect. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1250 --- src/compositor/meta-window-actor.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 79f4ce6a6..1207f1fb7 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -792,9 +792,6 @@ meta_window_actor_sync_actor_geometry (MetaWindowActor *self, if (meta_window_actor_is_frozen (self) && !did_placement) return META_WINDOW_ACTOR_CHANGE_POSITION | META_WINDOW_ACTOR_CHANGE_SIZE; - if (meta_window_actor_effect_in_progress (self)) - return META_WINDOW_ACTOR_CHANGE_POSITION | META_WINDOW_ACTOR_CHANGE_SIZE; - if (clutter_actor_has_allocation (actor)) { ClutterActorBox box;