aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2016-06-21 14:44:41 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2016-06-22 08:54:45 +0000
commit1569f46bdcffc9b4af3eed295aa29fa85e33f60c (patch)
treef85883fb1e9378dffc705a03e5f35146ffd5df1b /src/quick
parent7de18e6f52d6247bddd7bfabe0b2601d7db239b5 (diff)
Make QSGEngine::initialize backend-independent
Allow calling initialize(nullptr) regardless of which scenegraph backend is in use. Change-Id: Ie5965dcd12d423255d5eb85fed255107cac2acb9 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/scenegraph/qsgcontext_p.h2
-rw-r--r--src/quick/scenegraph/qsgdefaultrendercontext.cpp2
-rw-r--r--src/quick/scenegraph/qsgdefaultrendercontext_p.h2
-rw-r--r--src/quick/scenegraph/util/qsgengine.cpp22
4 files changed, 14 insertions, 14 deletions
diff --git a/src/quick/scenegraph/qsgcontext_p.h b/src/quick/scenegraph/qsgcontext_p.h
index 2fef0ff1e8..2527be0480 100644
--- a/src/quick/scenegraph/qsgcontext_p.h
+++ b/src/quick/scenegraph/qsgcontext_p.h
@@ -122,6 +122,8 @@ public:
virtual QSGTexture *createTexture(const QImage &image, uint flags = CreateTexture_Alpha) const = 0;
virtual QSGRenderer *createRenderer() = 0;
+ virtual void setAttachToGraphicsContext(bool attach) { Q_UNUSED(attach); }
+
void registerFontengineForCleanup(QFontEngine *engine);
Q_SIGNALS:
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext.cpp b/src/quick/scenegraph/qsgdefaultrendercontext.cpp
index 92e7f983a0..870c0488c3 100644
--- a/src/quick/scenegraph/qsgdefaultrendercontext.cpp
+++ b/src/quick/scenegraph/qsgdefaultrendercontext.cpp
@@ -273,7 +273,7 @@ void QSGDefaultRenderContext::initializeShader(QSGMaterialShader *shader)
shader->initialize();
}
-void QSGDefaultRenderContext::setAttachToGLContext(bool attach)
+void QSGDefaultRenderContext::setAttachToGraphicsContext(bool attach)
{
Q_ASSERT(!isValid());
m_attachToGLContext = attach;
diff --git a/src/quick/scenegraph/qsgdefaultrendercontext_p.h b/src/quick/scenegraph/qsgdefaultrendercontext_p.h
index bfb15b1eb9..c5e08c07f0 100644
--- a/src/quick/scenegraph/qsgdefaultrendercontext_p.h
+++ b/src/quick/scenegraph/qsgdefaultrendercontext_p.h
@@ -88,7 +88,7 @@ public:
virtual void compileShader(QSGMaterialShader *shader, QSGMaterial *material, const char *vertexCode = 0, const char *fragmentCode = 0);
virtual void initializeShader(QSGMaterialShader *shader);
- void setAttachToGLContext(bool attach);
+ void setAttachToGraphicsContext(bool attach) override;
static QSGDefaultRenderContext *from(QOpenGLContext *context);
diff --git a/src/quick/scenegraph/util/qsgengine.cpp b/src/quick/scenegraph/util/qsgengine.cpp
index 26a3d66077..f4d86bba04 100644
--- a/src/quick/scenegraph/util/qsgengine.cpp
+++ b/src/quick/scenegraph/util/qsgengine.cpp
@@ -115,23 +115,21 @@ QSGEngine::~QSGEngine()
*/
void QSGEngine::initialize(QOpenGLContext *context)
{
-#ifndef QT_NO_OPENGL
Q_D(QSGEngine);
- if (QOpenGLContext::currentContext() != context) {
+#ifdef QT_NO_OPENGL
+ if (context && QOpenGLContext::currentContext() != context) {
qWarning("WARNING: The context must be current before calling QSGEngine::initialize.");
return;
}
-
- auto openGLRenderContext = static_cast<QSGDefaultRenderContext *>(d->sgRenderContext.data());
-
- if (openGLRenderContext != nullptr && !openGLRenderContext->isValid()) {
- openGLRenderContext->setAttachToGLContext(false);
- openGLRenderContext->initialize(context);
- connect(context, &QOpenGLContext::aboutToBeDestroyed, this, &QSGEngine::invalidate);
- }
-#else
- Q_UNUSED(context)
#endif
+ if (d->sgRenderContext && !d->sgRenderContext->isValid()) {
+ d->sgRenderContext->setAttachToGraphicsContext(false);
+ d->sgRenderContext->initialize(context);
+#ifndef QT_NO_OPENGL
+ if (context)
+ connect(context, &QOpenGLContext::aboutToBeDestroyed, this, &QSGEngine::invalidate);
+#endif
+ }
}
/*!