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