[mutter] window-actor: Allow syncing actor geometry while effect is running



commit d12dc993d19b180391327623bf0917c155d68460
Author: Jonas Dreßler <verdre v0yd nl>
Date:   Tue May 12 11:40:49 2020 +0200

    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 79f4ce6a66..1207f1fb7c 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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]