From 6519c41fc7d778d28042d2e68e93d78af45194fd Mon Sep 17 00:00:00 2001
|
From: Jeffy Chen <jeffy.chen@rock-chips.com>
|
Date: Tue, 19 Jan 2021 11:16:36 +0800
|
Subject: [PATCH 16/31] waylandsink: Defer prepare window when getting zero
|
window handle
|
|
The window might not ready when we requesting it.
|
|
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
|
---
|
ext/wayland/gstwaylandsink.c | 8 ++++++++
|
1 file changed, 8 insertions(+)
|
|
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
|
index 56140c4..4577e6c 100644
|
--- a/ext/wayland/gstwaylandsink.c
|
+++ b/ext/wayland/gstwaylandsink.c
|
@@ -223,6 +223,8 @@ gst_wayland_sink_init (GstWaylandSink * sink)
|
{
|
g_mutex_init (&sink->display_lock);
|
g_mutex_init (&sink->render_lock);
|
+
|
+ sink->window_handle = 1;
|
}
|
|
static void
|
@@ -722,6 +724,12 @@ gst_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer)
|
gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (sink));
|
g_mutex_lock (&sink->render_lock);
|
|
+ /* HACK: Defer window prepare when getting zero window handle */
|
+ if (!sink->window_handle) {
|
+ GST_LOG_OBJECT (sink, "buffer %p dropped (window not ready)", buffer);
|
+ goto done;
|
+ }
|
+
|
if (!sink->window) {
|
/* if we were not provided a window, create one ourselves */
|
sink->window = gst_wl_window_new_toplevel (sink->display,
|
--
|
2.20.1
|