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