From: Nicolas Dufresne Date: Fri, 24 May 2019 00:24:40 +0000 (-0400) Subject: waylandsink: Workaround gnome-shell bug X-Git-Tag: accepted/tizen/unified/20220217.153506~2^2~10^2~9^2~12^2~2^2~90^2~1^2~80 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c3958b7f1c5c62a5fb3c5956d5abec80e22079ec;p=platform%2Fupstream%2Fgstreamer.git 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. --- 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 */