1From 1e7a40138eae8082887eb8a8672189588d86ff24 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Thu, 20 Jun 2019 12:43:20 +0800
4Subject: [PATCH 05/41] kmssink: Request window handle
5
6Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7---
8 sys/kms/gstkmssink.c | 13 +++++++++++++
9 sys/kms/gstkmssink.h |  2 ++
10 2 files changed, 15 insertions(+)
11
12diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
13index 797f57c..e20740f 100644
14--- a/sys/kms/gstkmssink.c
15+++ b/sys/kms/gstkmssink.c
16@@ -470,11 +470,22 @@ gst_kms_sink_expose (GstVideoOverlay * overlay)
17   gst_kms_sink_show_frame (GST_VIDEO_SINK (self), NULL);
18 }
19
20+static void
21+gst_kms_sink_set_window_handle (GstVideoOverlay * overlay, guintptr handle)
22+{
23+  GstKMSSink *self = GST_KMS_SINK (overlay);
24+
25+  g_return_if_fail (self != NULL);
26+
27+  self->window_handle = handle;
28+}
29+
30 static void
31 gst_kms_sink_video_overlay_init (GstVideoOverlayInterface * iface)
32 {
33   iface->expose = gst_kms_sink_expose;
34   iface->set_render_rectangle = gst_kms_sink_set_render_rectangle;
35+  iface->set_window_handle = gst_kms_sink_set_window_handle;
36 }
37
38 static int
39@@ -1475,6 +1486,8 @@ gst_kms_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
40   }
41   GST_OBJECT_UNLOCK (self);
42
43+  gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (bsink));
44+
45   GST_DEBUG_OBJECT (self, "negotiated caps = %" GST_PTR_FORMAT, caps);
46
47   return TRUE;
48diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
49index 317f789..a769d9b 100644
50--- a/sys/kms/gstkmssink.h
51+++ b/sys/kms/gstkmssink.h
52@@ -109,6 +109,8 @@ struct _GstKMSSink {
53   GstVideoMasteringDisplayInfo hdr_minfo;
54   GstVideoContentLightLevel hdr_cll;
55 #endif
56+
57+  guintptr window_handle;
58 };
59
60 struct _GstKMSSinkClass {
61--
622.20.1
63
64