HYL_OK3568_LINUX/buildroot/package/qt5/qt5declarative/0004-qquickwidget-Provide-widget-window-id-for-video-wind.patch
2025-05-10 21:49:39 +08:00

46 lines
1.6 KiB
Diff

From d4318d3412c747b2a84b48d19fad12f4cc32a690 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 4/4] 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 223d91f..fd4c7e3 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->setScreen(q->screen());
offscreenWindow->setTitle(QString::fromLatin1("Offscreen"));
offscreenWindow->setObjectName(QString::fromLatin1("QQuickOffScreenWindow"));
--
2.20.1