diff options
author | Andrew Knight <andrew.knight@digia.com> | 2014-03-06 14:59:42 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-06 15:50:37 +0100 |
commit | 3aa6a8b90f9c0e5f0ad72c462a15157b4e419ae6 (patch) | |
tree | a09aa93ab55e76f027c4b4571e5f84916fac7b87 /src/quick | |
parent | cb7e8dabf6e5b323bd3f2511127f63bee732fd99 (diff) |
QSGBatchRenderer: return when a shader is not returned by the manager
If a shader can't be found from the manager (e.g., if it failed to link),
return from rendering. This prevents the renderer from crashing on a
null pointer.
Task-number: QTBUG-37290
Change-Id: I44d0bbb721854c0bc6da681ff55f71140a5cb0bc
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 8a430c15a2..e271778bde 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -2040,6 +2040,8 @@ void Renderer::renderMergedBatch(const Batch *batch) QSGMaterial *material = gn->activeMaterial(); ShaderManager::Shader *sms = m_useDepthBuffer ? m_shaderManager->prepareMaterial(material) : m_shaderManager->prepareMaterialNoRewrite(material); + if (!sms) + return; QSGMaterialShader *program = sms->program; if (m_currentShader != sms) @@ -2124,6 +2126,8 @@ void Renderer::renderUnmergedBatch(const Batch *batch) QSGMaterial *material = gn->activeMaterial(); ShaderManager::Shader *sms = m_shaderManager->prepareMaterialNoRewrite(material); + if (!sms) + return; QSGMaterialShader *program = sms->program; if (sms != m_currentShader) |