[mutter/gnome-3-28] wayland/actor-surface: Queue redraw for frame callback



commit b1dc6f1a1911f4163827007414d878f50bd8a6c3
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Wed Oct 9 21:53:09 2019 +0200

    wayland/actor-surface: Queue redraw for frame callback
    
    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>

 src/wayland/meta-wayland-actor-surface.c | 5 +++++
 1 file changed, 5 insertions(+)
---
diff --git a/src/wayland/meta-wayland-actor-surface.c b/src/wayland/meta-wayland-actor-surface.c
index b6dbd3326e..d8d63c0f75 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);


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