aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/scenegraph
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/scenegraph')
-rw-r--r--src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp14
-rw-r--r--src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h4
-rw-r--r--src/declarative/scenegraph/coreapi/qsgrenderer.cpp15
-rw-r--r--src/declarative/scenegraph/qsgcontext.cpp2
4 files changed, 25 insertions, 10 deletions
diff --git a/src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp b/src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp
index 1e6b6919cb..7279ff0216 100644
--- a/src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp
+++ b/src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp
@@ -158,7 +158,7 @@ IndexGeometryNodePair IndexGeometryNodePairHeap::pop()
}
-QMLRenderer::QMLRenderer(QSGContext *context)
+QSGDefaultRenderer::QSGDefaultRenderer(QSGContext *context)
: QSGRenderer(context)
, m_opaqueNodes(64)
, m_transparentNodes(64)
@@ -175,7 +175,7 @@ QMLRenderer::QMLRenderer(QSGContext *context)
#endif
}
-void QMLRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyFlags flags)
+void QSGDefaultRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyFlags flags)
{
QSGRenderer::nodeChanged(node, flags);
@@ -190,7 +190,7 @@ void QMLRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyFlags flags)
m_needs_sorting = true;
}
-void QMLRenderer::render()
+void QSGDefaultRenderer::render()
{
#if defined (QML_RUNTIME_TESTING)
static bool dumpTree = qApp->arguments().contains(QLatin1String("--dump-tree"));
@@ -336,18 +336,18 @@ void QMLRenderer::render()
}
-void QMLRenderer::setSortFrontToBackEnabled(bool sort)
+void QSGDefaultRenderer::setSortFrontToBackEnabled(bool sort)
{
printf("setting sorting to... %d\n", sort);
m_sort_front_to_back = sort;
}
-bool QMLRenderer::isSortFrontToBackEnabled() const
+bool QSGDefaultRenderer::isSortFrontToBackEnabled() const
{
return m_sort_front_to_back;
}
-void QMLRenderer::buildLists(QSGNode *node)
+void QSGDefaultRenderer::buildLists(QSGNode *node)
{
if (node->isSubtreeBlocked())
return;
@@ -420,7 +420,7 @@ void QMLRenderer::buildLists(QSGNode *node)
}
}
-void QMLRenderer::renderNodes(const QDataBuffer<QSGGeometryNode *> &list)
+void QSGDefaultRenderer::renderNodes(const QDataBuffer<QSGGeometryNode *> &list)
{
const float scale = 1.0f / m_currentRenderOrder;
int count = list.size();
diff --git a/src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h b/src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h
index dc2d089391..f2adb00391 100644
--- a/src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h
+++ b/src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h
@@ -77,11 +77,11 @@ private:
};
-class QMLRenderer : public QSGRenderer
+class QSGDefaultRenderer : public QSGRenderer
{
Q_OBJECT
public:
- QMLRenderer(QSGContext *context);
+ QSGDefaultRenderer(QSGContext *context);
void render();
diff --git a/src/declarative/scenegraph/coreapi/qsgrenderer.cpp b/src/declarative/scenegraph/coreapi/qsgrenderer.cpp
index c6afb3154b..f56bf9a918 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();
diff --git a/src/declarative/scenegraph/qsgcontext.cpp b/src/declarative/scenegraph/qsgcontext.cpp
index 616474748d..682b514b9c 100644
--- a/src/declarative/scenegraph/qsgcontext.cpp
+++ b/src/declarative/scenegraph/qsgcontext.cpp
@@ -307,7 +307,7 @@ QSGRenderer *QSGContext::createRenderer()
{
// ### Do something with this before release...
static bool doFrontToBack = qApp->arguments().contains(QLatin1String("--opaque-front-to-back"));
- QMLRenderer *renderer = new QMLRenderer(this);
+ QSGDefaultRenderer *renderer = new QSGDefaultRenderer(this);
if (doFrontToBack) {
printf("QSGContext: Sorting opaque nodes front to back...\n");
renderer->setSortFrontToBackEnabled(true);