1From d6867946e3c19a13cd60a26c98afe68fb24ea0cb Mon Sep 17 00:00:00 2001 2From: Jeffy Chen <jeffy.chen@rock-chips.com> 3Date: Tue, 19 Jan 2021 11:16:36 +0800 4Subject: [PATCH 16/41] waylandsink: Defer prepare window when getting zero 5 window handle 6 7The window might not ready when we requesting it. 8 9Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10--- 11 ext/wayland/gstwaylandsink.c | 8 ++++++++ 12 1 file changed, 8 insertions(+) 13 14diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c 15index dddfe06..7917c69 100644 16--- a/ext/wayland/gstwaylandsink.c 17+++ b/ext/wayland/gstwaylandsink.c 18@@ -193,6 +193,8 @@ gst_wayland_sink_init (GstWaylandSink * self) 19 { 20 g_mutex_init (&self->display_lock); 21 g_mutex_init (&self->render_lock); 22+ 23+ self->window_handle = 1; 24 } 25 26 static void 27@@ -762,6 +764,12 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) 28 gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (self)); 29 g_mutex_lock (&self->render_lock); 30 31+ /* HACK: Defer window prepare when getting zero window handle */ 32+ if (!self->window_handle) { 33+ GST_LOG_OBJECT (self, "buffer %p dropped (window not ready)", buffer); 34+ goto done; 35+ } 36+ 37 if (!self->window) { 38 /* if we were not provided a window, create one ourselves */ 39 self->window = gst_wl_window_new_toplevel (self->display, 40-- 412.20.1 42 43