wayland/surface: Schedule updates in the context of the surface actor

This makes all stage updates that result from applying the pending
state of a Wayland surface emit an "update-scheduled" signal in the
context of the relevant surface actor.

A common case where an "update-scheduled" signal is needed is
when applying "empty" client commits. In this case a
"repaint-scheduled" signal would not be emitted since the commit
doesn't trigger a repaint. However, it is still important to add
handling for such updates with variable refresh rate when the
releavnt actor is also driving the refresh rate.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154>
This commit is contained in:
Dor Askayo 2024-02-03 19:37:06 +02:00 committed by Marge Bot
parent 627ab24721
commit 7eb99ddef7

View File

@ -303,14 +303,7 @@ meta_wayland_actor_surface_apply_state (MetaWaylandSurfaceRole *surface_role,
meta_wayland_actor_surface_get_instance_private (actor_surface); meta_wayland_actor_surface_get_instance_private (actor_surface);
if (priv->actor && !wl_list_empty (&pending->frame_callback_list)) if (priv->actor && !wl_list_empty (&pending->frame_callback_list))
{ meta_surface_actor_schedule_update (priv->actor);
ClutterStage *stage;
stage =
CLUTTER_STAGE (clutter_actor_get_stage (CLUTTER_ACTOR (priv->actor)));
if (stage)
clutter_stage_schedule_update (stage);
}
meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending); meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending);