summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2019-10-09 21:53:09 +0200
committerRobert Mader <robert.mader@posteo.de>2020-11-24 22:35:37 +0100
commitb1dc6f1a1911f4163827007414d878f50bd8a6c3 (patch)
tree43a68ffeb3efff4091921f0a71f7c0a9df59ed90
parent1b42dbd6d5157ed5b82d197f0d79fdbdc667e330 (diff)
downloadmutter-gnome-3-28.tar.gz
wayland/actor-surface: Queue redraw for frame callbackgnome-3-28
A frame callback without damage is still expected to be responded to. Implement this by simply queuing damage if there are any frame callbacks requested and there is no damage yet. If there already is damage, we'll be queued already, but with more correct damage. Without we simply need to make sure we flush the callbacks if any area of surface is not occluded. Fixes: https://gitlab.gnome.org/GNOME/mutter/issues/457 https://gitlab.gnome.org/GNOME/mutter/merge_requests/839 (cherry picked from commit d49d10b14f4e0fa80e6867979b26fab383610b39) Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1570>
-rw-r--r--src/wayland/meta-wayland-actor-surface.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/wayland/meta-wayland-actor-surface.c b/src/wayland/meta-wayland-actor-surface.c
index b6dbd3326..d8d63c0f7 100644
--- a/src/wayland/meta-wayland-actor-surface.c
+++ b/src/wayland/meta-wayland-actor-surface.c
@@ -171,6 +171,11 @@ meta_wayland_actor_surface_commit (MetaWaylandSurfaceRole *surface_role,
meta_wayland_surface_role_get_surface (surface_role);
MetaWaylandSurface *toplevel_surface;
+ if (!wl_list_empty (&pending->frame_callback_list) &&
+ cairo_region_is_empty (pending->surface_damage) &&
+ cairo_region_is_empty (pending->buffer_damage))
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (surface->surface_actor));
+
meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending);
toplevel_surface = meta_wayland_surface_get_toplevel (surface);