diff options
-rw-r--r-- | src/declarative/items/qsgshadereffectitem.cpp | 1 | ||||
-rw-r--r-- | src/declarative/items/qsgshadereffectnode.cpp | 1 | ||||
-rw-r--r-- | src/declarative/scenegraph/coreapi/qsgrenderer.cpp | 15 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/declarative/items/qsgshadereffectitem.cpp b/src/declarative/items/qsgshadereffectitem.cpp index 44e075c6f7..3fae0f15fd 100644 --- a/src/declarative/items/qsgshadereffectitem.cpp +++ b/src/declarative/items/qsgshadereffectitem.cpp @@ -540,6 +540,7 @@ QSGNode *QSGShaderEffectItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeD s.fragmentCode = qt_default_fragment_code; if (s.vertexCode.isEmpty()) s.vertexCode = qt_default_vertex_code; + s.className = metaObject()->className(); m_material.setProgramSource(s); node->markDirty(QSGNode::DirtyMaterial); diff --git a/src/declarative/items/qsgshadereffectnode.cpp b/src/declarative/items/qsgshadereffectnode.cpp index 74cd995d0d..5d3efb934c 100644 --- a/src/declarative/items/qsgshadereffectnode.cpp +++ b/src/declarative/items/qsgshadereffectnode.cpp @@ -84,6 +84,7 @@ QSGCustomMaterialShader::QSGCustomMaterialShader(const QSGShaderEffectMaterialKe void QSGCustomMaterialShader::deactivate() { + QSGMaterialShader::deactivate(); glDisable(GL_CULL_FACE); } diff --git a/src/declarative/scenegraph/coreapi/qsgrenderer.cpp b/src/declarative/scenegraph/coreapi/qsgrenderer.cpp index dbf704b64a..cc24cc066b 100644 --- a/src/declarative/scenegraph/coreapi/qsgrenderer.cpp +++ b/src/declarative/scenegraph/coreapi/qsgrenderer.cpp @@ -229,6 +229,21 @@ void QSGRenderer::renderScene(const Bindable &bindable) int bindTime = frameTimer.elapsed(); #endif +#ifndef QT_NO_DEBUG + // Sanity check that attribute registers are disabled + { + GLint count; + glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &count); + GLint enabled; + for (int i=0; i<count; ++i) { + glGetVertexAttribiv(i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled); + if (enabled) { + qWarning("QSGRenderer: attribute %d is enabled, this can lead to memory corruption and crashes.", i); + } + } + } +#endif + render(); #ifdef QSG_RENDERER_TIMING int renderTime = frameTimer.elapsed(); |