summaryrefslogtreecommitdiff
path: root/src/platform/wayland
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/wayland')
-rw-r--r--src/platform/wayland/backend.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/platform/wayland/backend.c b/src/platform/wayland/backend.c
index f6207ed..26d88f6 100644
--- a/src/platform/wayland/backend.c
+++ b/src/platform/wayland/backend.c
@@ -30,7 +30,9 @@ static void impl_display_check(struct yasl_private_display *d)
static bool impl_surface_frame_in_flight(const struct yasl_surface *s)
{
- return ((const struct wayland_surface *)s)->frame_cb != NULL;
+ struct wayland_surface *w = (struct wayland_surface *)s;
+ /* A swap on a rendering thread is in flight before the owner arms its callback. */
+ return w->frame_cb != NULL || atomic_load(&w->frame_deferred);
}
static void impl_display_flush(struct yasl_private_display *d)