mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -05:00
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
This commit is contained in:
parent
6414b8c45f
commit
d12dc993d1
@ -792,9 +792,6 @@ meta_window_actor_sync_actor_geometry (MetaWindowActor *self,
|
|||||||
if (meta_window_actor_is_frozen (self) && !did_placement)
|
if (meta_window_actor_is_frozen (self) && !did_placement)
|
||||||
return META_WINDOW_ACTOR_CHANGE_POSITION | META_WINDOW_ACTOR_CHANGE_SIZE;
|
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))
|
if (clutter_actor_has_allocation (actor))
|
||||||
{
|
{
|
||||||
ClutterActorBox box;
|
ClutterActorBox box;
|
||||||
|
Loading…
Reference in New Issue
Block a user