From 3aa6a8b90f9c0e5f0ad72c462a15157b4e419ae6 Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Thu, 6 Mar 2014 14:59:42 +0200 Subject: 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 --- src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp') 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) -- cgit v1.2.3