From 1dc3c9e183669c2b23ab0428109a6e107ace6e25 Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Fri, 13 Apr 2018 09:28:53 +0200 Subject: wayland: don't poll if there are no pending frames Otherwise the following poll may not return for an arbitrary amount of time. This can happen if another wayland event queue has flushed and read our events. https://bugzilla.gnome.org/show_bug.cgi?id=795224 --- gst-libs/gst/vaapi/gstvaapiwindow_wayland.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c b/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c index 3d77e456..bd2d89d8 100644 --- a/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c +++ b/gst-libs/gst/vaapi/gstvaapiwindow_wayland.c @@ -185,6 +185,11 @@ gst_vaapi_window_wayland_sync (GstVaapiWindow * window) if (wl_display_flush (wl_display) < 0) goto error; + if (g_atomic_int_get (&priv->num_frames_pending) == 0) { + wl_display_cancel_read (wl_display); + return TRUE; + } + again: if (gst_poll_wait (priv->poll, GST_CLOCK_TIME_NONE) < 0) { int saved_errno = errno; -- cgit v1.2.3