aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickshadereffectsource.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2014-02-23 13:22:13 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-25 17:08:02 +0100
commit501bd0fa6709caff3d5425abc16fa8ef3f5c88af (patch)
treef15f6b7977a0af5006348736494e2029079e9232 /src/quick/items/qquickshadereffectsource.cpp
parentaaea23708a46259094a8203f73ee0650c362d85f (diff)
Fix crashes and incorrect extension queries on GL3+
glGetString(GL_EXTENSIONS) is deprecated in OpenGL 3.0+. This means that in core profiles on 3.2+ (or without the fwd compatibility bit on 3.0/3.1), the call is not supported and may return NULL. This causes a crash in at least one place where we try to blindly strstr the result. The correct solution is to use QOpenGLContext::extensions() and hasExtension() which is prepared to handle GL3+. Change-Id: I52fec7dcee001cdc0933af03f5eed4b7c822b2bb Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick/items/qquickshadereffectsource.cpp')
-rw-r--r--src/quick/items/qquickshadereffectsource.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index 98203c51e5..f78a05ea9a 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -353,9 +353,9 @@ void QQuickShaderEffectTexture::grab()
if (m_context->openglContext()->format().samples() <= 1) {
m_multisampling = false;
} else {
- QList<QByteArray> extensions = QByteArray((const char *)glGetString(GL_EXTENSIONS)).split(' ');
- m_multisampling = extensions.contains("GL_EXT_framebuffer_multisample")
- && extensions.contains("GL_EXT_framebuffer_blit");
+ const QSet<QByteArray> extensions = m_context->openglContext()->extensions();
+ m_multisampling = extensions.contains(QByteArrayLiteral("GL_EXT_framebuffer_multisample"))
+ && extensions.contains(QByteArrayLiteral("GL_EXT_framebuffer_blit"));
}
m_multisamplingChecked = true;
}