From c3958b7f1c5c62a5fb3c5956d5abec80e22079ec Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Thu, 23 May 2019 20:24:40 -0400 Subject: [PATCH] waylandsink: Workaround gnome-shell bug Use a timeout to limit that amount of time we wait after the compositor for the initial configure event. Compositor are support to emit a configure event before any wl_buffer can be attached. The problem is that Weston strongly enforce this, while gnome-shell simply does not emit such an event. --- ext/wayland/wlwindow.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c index 77b2d81..9ebbcaf 100644 --- a/ext/wayland/wlwindow.c +++ b/ext/wayland/wlwindow.c @@ -259,6 +259,8 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info, /* Check which protocol we will use (in order of preference) */ if (display->xdg_wm_base) { + gint64 timeout; + /* First create the XDG surface */ window->xdg_surface = xdg_wm_base_get_xdg_surface (display->xdg_wm_base, window->area_surface); @@ -286,8 +288,14 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info, wl_display_flush (display->display); g_mutex_lock (&window->configure_mutex); - while (!window->configured) - g_cond_wait (&window->configure_cond, &window->configure_mutex); + timeout = g_get_monotonic_time () + 100 * G_TIME_SPAN_MILLISECOND; + while (!window->configured) { + if (!g_cond_wait_until (&window->configure_cond, &window->configure_mutex, + timeout)) { + GST_WARNING ("The compositor did not send configure event."); + break; + } + } g_mutex_unlock (&window->configure_mutex); } else if (display->wl_shell) { /* go toplevel */ -- 2.7.4