[mutter] wayland/actor-surface: Restore stage update for unmapped actors



commit e42196b00a96f2169f18861964328c61a4590d5f
Author: Robert Mader <robert mader posteo de>
Date:   Sun Oct 3 19:23:39 2021 +0200

    wayland/actor-surface: Restore stage update for unmapped actors
    
    The extra stage update we schedule in `apply_state()` is mainly
    needed in two situations:
     - a partial update happened only in obscurred or off-screen parts
       of a surface
     - a surface requests frame callbacks without having done damage,
       notably the (in)famous Firefox vsync implementation.
    
    Commit 0330ce1f150f071620 limited the update to cases when the actor
    was mapped, breaking it for Firefox in the overview.
    
    Remove the mapped check again and get the stage from the backend,
    restoring previous behaviour.
    
    Fixes 0330ce1f150f071620
    Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/1957
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2034>

 src/wayland/meta-wayland-actor-surface.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
---
diff --git a/src/wayland/meta-wayland-actor-surface.c b/src/wayland/meta-wayland-actor-surface.c
index 58f96375fb..b6d26fdc11 100644
--- a/src/wayland/meta-wayland-actor-surface.c
+++ b/src/wayland/meta-wayland-actor-surface.c
@@ -302,11 +302,10 @@ meta_wayland_actor_surface_apply_state (MetaWaylandSurfaceRole  *surface_role,
 
   if (!wl_list_empty (&pending->frame_callback_list) &&
       priv->actor &&
-      clutter_actor_is_mapped (CLUTTER_ACTOR (priv->actor)) &&
       !meta_surface_actor_is_obscured (priv->actor))
     {
-      ClutterActor *stage =
-        clutter_actor_get_stage (CLUTTER_ACTOR (priv->actor));
+      MetaBackend *backend = meta_get_backend ();
+      ClutterActor *stage = meta_backend_get_stage (backend);
 
       clutter_stage_schedule_update (CLUTTER_STAGE (stage));
     }


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