summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-07-07 18:21:52 +0200
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-08-06 19:07:45 +0200
commitfffb6233a366a92336aeed690cae0b704358511d (patch)
treed7ee82c5dfc696151aba1e2f134c1b350f15de1c /src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
parent83a6c1b92f38b4b0bdb3f90d67be7bb1e4caef7a (diff)
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 <andras.becsi@digia.com>
Diffstat (limited to 'src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp')
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp42
1 files changed, 20 insertions, 22 deletions
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 <QGuiApplication>
#include <QLayout>
+#include <QMouseEvent>
+#include <QOpenGLContext>
+#include <QResizeEvent>
+#include <QSGAbstractRenderer>
+#include <QSGEngine>
#include <QSGNode>
-#include <private/qsgadaptationlayer_p.h>
-#include <private/qsgcontext_p.h>
-#include <private/qsgrenderer_p.h>
-#include <private/qwidget_p.h>
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());
}