Enable sorting of opaque items again in the default renderer.
authorGunnar Sletta <gunnar.sletta@digia.com>
Tue, 5 Feb 2013 13:30:31 +0000 (14:30 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 5 Feb 2013 15:48:43 +0000 (16:48 +0100)
This was disabled a long while back because we thought the code was
broken, and it turned out the problem was that our sort function
had a bug. b570d384c0704ea12364e353493eeb6f1ae34cd3 fixed the
actual problem, so now we reenable it.

Task-number: QTBUG-28563
Change-Id: I4032df82a1fd4cf7f775c8c64302c18239879fea
Reviewed-by: Michael Brasser <michael.brasser@live.com>
src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp
src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h

index e662c2b..1642f7f 100644 (file)
@@ -131,7 +131,6 @@ QSGDefaultRenderer::QSGDefaultRenderer(QSGContext *context)
     , m_transparentNodes(64)
     , m_renderGroups(4)
     , m_rebuild_lists(false)
-    , m_needs_sorting(false)
     , m_sort_front_to_back(false)
     , m_render_node_added(false)
     , m_currentRenderOrder(1)
@@ -212,6 +211,8 @@ void QSGDefaultRenderer::render()
     m_currentProgram = 0;
     m_currentMatrix = 0;
 
+    bool sortNodes = m_rebuild_lists;
+
     if (m_rebuild_lists) {
         m_opaqueNodes.reset();
         m_transparentNodes.reset();
@@ -228,7 +229,7 @@ void QSGDefaultRenderer::render()
     int debugtimeLists = debugTimer.elapsed();
 #endif
 
-    if (m_needs_sorting) {
+    if (sortNodes) {
         if (!m_opaqueNodes.isEmpty()) {
             bool (*lessThan)(QSGNode *, QSGNode *);
             lessThan = m_sort_front_to_back ? nodeLessThanWithRenderOrder : nodeLessThan;
@@ -240,7 +241,6 @@ void QSGDefaultRenderer::render()
                 start = end;
             }
         }
-        m_needs_sorting = false;
     }
 
 #ifdef RENDERER_DEBUG
index 645ba93..ae759c0 100644 (file)
@@ -76,7 +76,6 @@ private:
     QDataBuffer<RenderGroup> m_renderGroups;
 
     bool m_rebuild_lists;
-    bool m_needs_sorting;
     bool m_sort_front_to_back;
     bool m_render_node_added;
     int m_currentRenderOrder;