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



commit d49d10b14f4e0fa80e6867979b26fab383610b39
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

 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 f74bfc59c..a61a80eff 100644
--- a/src/wayland/meta-wayland-actor-surface.c
+++ b/src/wayland/meta-wayland-actor-surface.c
@@ -241,6 +241,11 @@ meta_wayland_actor_surface_commit (MetaWaylandSurfaceRole  *surface_role,
   if (!priv->actor)
     return;
 
+  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 (priv->actor));
+
   meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending);
 
   meta_wayland_actor_surface_sync_actor_state (actor_surface);


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