From fffb6233a366a92336aeed690cae0b704358511d Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 7 Jul 2014 18:21:52 +0200 Subject: Use QSGEngine instead of the private QSGRenderContext QSGEngine was added in Qt 5.4 to allow using the scene graph without QQuickWindow. Use it for our FBO as well as for the QOpenGLWidget rendering. Change-Id: If4665d4f33c9dad69d2d4269309163bb5ffbd8e3 Reviewed-by: Andras Becsi --- .../render_widget_host_view_qt_delegate_widget.cpp | 42 +++++++++++----------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp') diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 33ef3a3c0..2fb03f02e 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -43,21 +43,22 @@ #include "qwebenginepage_p.h" #include "qwebengineview.h" +#include #include +#include +#include +#include +#include +#include #include -#include -#include -#include -#include static const int MaxTooltipLength = 1024; RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(RenderWidgetHostViewQtDelegateClient *client, QWidget *parent) : QOpenGLWidget(parent) , m_client(client) - , rootNode(new QSGRootNode) - , sgContext(QSGContext::createDefaultContext()) - , sgRenderContext(new QSGRenderContext(sgContext.data())) + , m_rootNode(new QSGRootNode) + , m_sgEngine(new QSGEngine) , m_isPopup(false) { setFocusPolicy(Qt::StrongFocus); @@ -222,9 +223,10 @@ bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event) void RenderWidgetHostViewQtDelegateWidget::initializeGL() { - sgRenderContext->initialize(QOpenGLContext::currentContext()); - sgRenderer.reset(sgRenderContext->createRenderer()); - sgRenderer->setRootNode(rootNode.data()); + m_sgEngine->initialize(QOpenGLContext::currentContext()); + m_sgRenderer.reset(m_sgEngine->createRenderer()); + m_sgRenderer->setRootNode(m_rootNode.data()); + m_sgRenderer->setClearColor(Qt::white); } void RenderWidgetHostViewQtDelegateWidget::paintGL() @@ -234,19 +236,15 @@ void RenderWidgetHostViewQtDelegateWidget::paintGL() if (!QOpenGLContext::currentContext()) return; #endif - QSGNode *paintNode = m_client->updatePaintNode(rootNode->firstChild(), sgRenderContext.data()); - if (paintNode != rootNode->firstChild()) { - delete rootNode->firstChild(); - rootNode->appendChildNode(paintNode); + QSGNode *paintNode = m_client->updatePaintNode(m_rootNode->firstChild()); + if (paintNode != m_rootNode->firstChild()) { + delete m_rootNode->firstChild(); + m_rootNode->appendChildNode(paintNode); } - rootNode->markDirty(QSGNode::DirtyForceUpdate); // Force matrix, clip and opacity update. - sgRenderer->nodeChanged(rootNode.data(), QSGNode::DirtyForceUpdate); // Force render list update. + m_sgRenderer->setDeviceRect(size()); + m_sgRenderer->setViewportRect(size()); + m_sgRenderer->setProjectionMatrixToRect(QRectF(QPointF(), size())); - sgRenderer->setDeviceRect(size()); - sgRenderer->setViewportRect(size()); - sgRenderer->setProjectionMatrixToRect(QRectF(QPointF(), size())); - sgRenderer->setClearColor(Qt::white); - - sgRenderContext->renderNextFrame(sgRenderer.data(), defaultFramebufferObject()); + m_sgRenderer->renderScene(defaultFramebufferObject()); } -- cgit v1.2.3