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