mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 09:30:45 -05:00
window-actor: Freeze subsurfaces as well
In order to prevent glitches in animations, make sure we freeze all surfaces of a window actor. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1339
This commit is contained in:
parent
22902a5e2c
commit
1c1c8b25ed
@ -545,6 +545,9 @@ meta_surface_actor_set_frozen (MetaSurfaceActor *self,
|
|||||||
MetaSurfaceActorPrivate *priv =
|
MetaSurfaceActorPrivate *priv =
|
||||||
meta_surface_actor_get_instance_private (self);
|
meta_surface_actor_get_instance_private (self);
|
||||||
|
|
||||||
|
if (priv->frozen == frozen)
|
||||||
|
return;
|
||||||
|
|
||||||
priv->frozen = frozen;
|
priv->frozen = frozen;
|
||||||
|
|
||||||
if (!frozen && priv->pending_damage)
|
if (!frozen && priv->pending_damage)
|
||||||
|
@ -261,13 +261,15 @@ static void
|
|||||||
meta_window_actor_set_frozen (MetaWindowActor *self,
|
meta_window_actor_set_frozen (MetaWindowActor *self,
|
||||||
gboolean frozen)
|
gboolean frozen)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv =
|
ClutterActor *child;
|
||||||
meta_window_actor_get_instance_private (self);
|
ClutterActorIter iter;
|
||||||
|
|
||||||
if (meta_surface_actor_is_frozen (priv->surface) == frozen)
|
clutter_actor_iter_init (&iter, CLUTTER_ACTOR (self));
|
||||||
return;
|
while (clutter_actor_iter_next (&iter, &child))
|
||||||
|
{
|
||||||
meta_surface_actor_set_frozen (priv->surface, frozen);
|
if (META_IS_SURFACE_ACTOR (child))
|
||||||
|
meta_surface_actor_set_frozen (META_SURFACE_ACTOR (child), frozen);
|
||||||
|
}
|
||||||
|
|
||||||
META_WINDOW_ACTOR_GET_CLASS (self)->set_frozen (self, frozen);
|
META_WINDOW_ACTOR_GET_CLASS (self)->set_frozen (self, frozen);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user