hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
From 4cd5d02fe30b04a554f1d3ca792682b0aaff423d Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Fri, 30 Nov 2018 17:45:33 +0800
Subject: [PATCH 5/5] qquickwidget: Provide widget window id for video window
 
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
 src/quickwidgets/qquickwidget.cpp | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
 
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
index 39780f8de..ddf56f3b9 100644
--- a/src/quickwidgets/qquickwidget.cpp
+++ b/src/quickwidgets/qquickwidget.cpp
@@ -100,12 +100,26 @@ private:
     QQuickWidget *m_quickWidget;
 };
 
+class QQuickOffscreenWindow : public QQuickWindow, public QVideoWindowAbstractInterface
+{
+public:
+    QQuickOffscreenWindow(QQuickWindowPrivate &dd, QQuickRenderControl *control)
+        : QQuickWindow(dd, control),
+        renderControl(control) {}
+    WId videoWinId() const Q_DECL_OVERRIDE {
+        QWindow *window = renderControl->renderWindow(NULL);
+        return window ? window->winId() : 0;
+    }
+private:
+    QQuickRenderControl *renderControl;
+};
+
 void QQuickWidgetPrivate::init(QQmlEngine* e)
 {
     Q_Q(QQuickWidget);
 
     renderControl = new QQuickWidgetRenderControl(q);
-    offscreenWindow = new QQuickWindow(*new QQuickOffcreenWindowPrivate(),renderControl);
+    offscreenWindow = new QQuickOffscreenWindow(*new QQuickOffcreenWindowPrivate(),renderControl);
     offscreenWindow->setTitle(QString::fromLatin1("Offscreen"));
     offscreenWindow->setObjectName(QString::fromLatin1("QQuickOffScreenWindow"));
     // Do not call create() on offscreenWindow.
-- 
2.20.1