Remove unused performance flags.
authorMichael Brasser <michael.brasser@nokia.com>
Wed, 22 Feb 2012 00:45:53 +0000 (10:45 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 6 Jun 2012 00:16:24 +0000 (02:16 +0200)
Change-Id: I9a9111703e2480af02b1af7033ea6bb12e7a75a5
Reviewed-by: Glenn Watson <glenn.watson@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
src/quick/items/qquickcanvas.cpp
src/quick/items/qquickitem.cpp
src/quick/items/qquickitem_p.h
src/quick/items/qquickitemview.cpp
src/quick/items/qquickpositioners_p_p.h
src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp
src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h
src/quick/scenegraph/coreapi/qsgnode.cpp
src/quick/scenegraph/coreapi/qsgnode.h

index c2b1fe5..7b8d916 100644 (file)
@@ -2040,11 +2040,6 @@ void QQuickCanvasPrivate::updateDirtyNode(QQuickItem *item)
         }
     }
 
-    if ((dirty & (QQuickItemPrivate::PerformanceHints | QQuickItemPrivate::Canvas)) && itemPriv->groupNode) {
-        itemPriv->groupNode->setFlag(QSGNode::ChildrenDoNotOverlap, itemPriv->childrenDoNotOverlap);
-        itemPriv->groupNode->setFlag(QSGNode::StaticSubtreeGeometry, itemPriv->staticSubtreeGeometry);
-    }
-
 #ifndef QT_NO_DEBUG
     // Check consistency.
     const QSGNode *nodeChain[] = {
index 747f1a1..15271d5 100644 (file)
@@ -2433,8 +2433,7 @@ QQuickItemPrivate::QQuickItemPrivate()
   notifiedActiveFocus(false), filtersChildMouseEvents(false), explicitVisible(true),
   effectiveVisible(true), explicitEnable(true), effectiveEnable(true), polishScheduled(false),
   inheritedLayoutMirror(false), effectiveLayoutMirror(false), isMirrorImplicit(true),
-  inheritMirrorFromParent(false), inheritMirrorFromItem(false), childrenDoNotOverlap(false),
-  staticSubtreeGeometry(false),
+  inheritMirrorFromParent(false), inheritMirrorFromItem(false),
   isAccessible(false),
 
   dirtyAttributes(0), nextDirtyItem(0), prevDirtyItem(0),
@@ -4314,7 +4313,6 @@ QString QQuickItemPrivate::dirtyToString() const
     DIRTY_TO_STRING(EffectReference);
     DIRTY_TO_STRING(Visible);
     DIRTY_TO_STRING(HideReference);
-    DIRTY_TO_STRING(PerformanceHints);
 
     return rv;
 }
index 8699a56..e7c449b 100644 (file)
@@ -405,10 +405,8 @@ public:
     bool isMirrorImplicit:1;
     bool inheritMirrorFromParent:1;
     bool inheritMirrorFromItem:1;
-    bool childrenDoNotOverlap:1;
-    bool staticSubtreeGeometry:1;
     bool isAccessible:1;
-    // bool dummy:1
+    // bool dummy:3
     // Bit 32
 
     enum DirtyType {
@@ -432,7 +430,6 @@ public:
         EffectReference         = 0x00008000,
         Visible                 = 0x00010000,
         HideReference           = 0x00020000,
-        PerformanceHints        = 0x00040000,
         // When you add an attribute here, don't forget to update
         // dirtyToString()
 
@@ -895,8 +892,6 @@ QSGNode *QQuickItemPrivate::childContainerNode()
             opacityNode()->appendChildNode(groupNode);
         else
             itemNode()->appendChildNode(groupNode);
-        groupNode->setFlag(QSGNode::ChildrenDoNotOverlap, childrenDoNotOverlap);
-        groupNode->setFlag(QSGNode::StaticSubtreeGeometry, staticSubtreeGeometry);
 #ifdef QML_RUNTIME_TESTING
         groupNode->description = QLatin1String("group");
 #endif
index 1774931..9ea2aad 100644 (file)
@@ -1547,7 +1547,6 @@ int QQuickItemViewPrivate::mapFromModel(int modelIndex) const
 void QQuickItemViewPrivate::init()
 {
     Q_Q(QQuickItemView);
-    QQuickItemPrivate::get(contentItem)->childrenDoNotOverlap = true;
     q->setFlag(QQuickItem::ItemIsFocusScope);
     QObject::connect(q, SIGNAL(movementEnded()), q, SLOT(animStopped()));
     q->setFlickableDirection(QQuickFlickable::VerticalFlick);
index 8c6bf7f..066caf5 100644 (file)
@@ -83,7 +83,6 @@ public:
     void init(QQuickBasePositioner::PositionerType at)
     {
         type = at;
-        childrenDoNotOverlap = true;
     }
 
     qreal spacing;
index c04afd7..f0c90e3 100644 (file)
@@ -125,58 +125,10 @@ static bool nodeLessThanWithRenderOrder(QSGNode *nodeA, QSGNode *nodeB)
     return a->matrix() < b->matrix();
 }
 
-
-QSGDefaultRenderer::IndexNodePair::IndexNodePair(int i, QSGNode *node)
-    : QPair<int, QSGNode *>(i, node)
-{
-}
-
-bool QSGDefaultRenderer::IndexNodePair::operator < (const QSGDefaultRenderer::IndexNodePair &other) const
-{
-    return nodeLessThan(second, other.second);
-}
-
-
-QSGDefaultRenderer::IndexNodePairHeap::IndexNodePairHeap()
-    : v(64)
-{
-}
-
-void QSGDefaultRenderer::IndexNodePairHeap::insert(const QSGDefaultRenderer::IndexNodePair &x)
-{
-    int i = v.size();
-    v.add(x);
-    while (i != 0 && v.at(i) < v.at(parent(i))) {
-        qSwap(v.at(parent(i)), v.at(i));
-        i = parent(i);
-    }
-}
-
-QSGDefaultRenderer::IndexNodePair QSGDefaultRenderer::IndexNodePairHeap::pop()
-{
-    IndexNodePair x = top();
-    if (v.size() > 1)
-        qSwap(v.first(), v.last());
-    v.pop_back();
-    int i = 0;
-    while (left(i) < v.size()) {
-        int low = left(i);
-        if (right(i) < v.size() && v.at(right(i)) < v.at(low))
-            low = right(i);
-        if (!(v.at(low) < v.at(i)))
-            break;
-        qSwap(v.at(i), v.at(low));
-        i = low;
-    }
-    return x;
-}
-
-
 QSGDefaultRenderer::QSGDefaultRenderer(QSGContext *context)
     : QSGRenderer(context)
     , m_opaqueNodes(64)
     , m_transparentNodes(64)
-    , m_tempNodes(64)
     , m_renderGroups(4)
     , m_rebuild_lists(false)
     , m_needs_sorting(false)
@@ -197,7 +149,7 @@ void QSGDefaultRenderer::nodeChanged(QSGNode *node, QSGNode::DirtyState state)
 
     const quint32 rebuildBits = QSGNode::DirtyNodeAdded | QSGNode::DirtyNodeRemoved
                                 | QSGNode::DirtyMaterial | QSGNode::DirtyOpacity
-                                | QSGNode::DirtyForceUpdate | QSGNode::DirtyChildrenDoNotOverlap;
+                                | QSGNode::DirtyForceUpdate;
 
     if (state & rebuildBits)
         m_rebuild_lists = true;
@@ -410,52 +362,8 @@ void QSGDefaultRenderer::buildLists(QSGNode *node)
     if (!node->firstChild())
         return;
 
-#ifdef FORCE_NO_REORDER
-    static bool reorder = false;
-#else
-    static bool reorder = qApp->arguments().contains(QLatin1String("--reorder"));
-#endif
-
-    if (reorder && node->firstChild() != node->lastChild() && (node->flags() & QSGNode::ChildrenDoNotOverlap)) {
-        QVarLengthArray<int, 16> beginIndices;
-        QVarLengthArray<int, 16> endIndices;
-        int baseCount = m_transparentNodes.size();
-        int baseGroupCount = m_renderGroups.size();
-        int count = 0;
-        for (QSGNode *c = node->firstChild(); c; c = c->nextSibling()) {
-            beginIndices.append(m_transparentNodes.size());
-            buildLists(c);
-            endIndices.append(m_transparentNodes.size());
-            ++count;
-        }
-
-        int childNodeCount = m_transparentNodes.size() - baseCount;
-        // Don't reorder if new render groups were added.
-        if (m_renderGroups.size() == baseGroupCount && childNodeCount) {
-            m_tempNodes.reset();
-            m_tempNodes.reserve(childNodeCount);
-            while (childNodeCount) {
-                for (int i = 0; i < count; ++i) {
-                    if (beginIndices[i] != endIndices[i])
-                        m_heap.insert(IndexNodePair(i, m_transparentNodes.at(beginIndices[i]++)));
-                }
-                while (!m_heap.isEmpty()) {
-                    IndexNodePair pair = m_heap.pop();
-                    m_tempNodes.add(pair.second);
-                    --childNodeCount;
-                    int i = pair.first;
-                    if (beginIndices[i] != endIndices[i] && !nodeLessThan(m_transparentNodes.at(beginIndices[i]), pair.second))
-                        m_heap.insert(IndexNodePair(i, m_transparentNodes.at(beginIndices[i]++)));
-                }
-            }
-            Q_ASSERT(m_tempNodes.size() == m_transparentNodes.size() - baseCount);
-
-            memcpy(&m_transparentNodes.at(baseCount), &m_tempNodes.at(0), m_tempNodes.size() * sizeof(QSGGeometryNode *));
-        }
-    } else {
-        for (QSGNode *c = node->firstChild(); c; c = c->nextSibling())
-            buildLists(c);
-    }
+    for (QSGNode *c = node->firstChild(); c; c = c->nextSibling())
+        buildLists(c);
 }
 
 void QSGDefaultRenderer::renderNodes(QSGNode *const *nodes, int count)
index 53384bf..464e17b 100644 (file)
@@ -55,30 +55,6 @@ class Q_QUICK_PRIVATE_EXPORT QSGDefaultRenderer : public QSGRenderer
 {
     Q_OBJECT
 public:
-    class IndexNodePair : public QPair<int, QSGNode *>
-    {
-    public:
-        IndexNodePair(int i, QSGNode *n);
-        bool operator < (const IndexNodePair &other) const;
-    };
-
-
-    // Minimum heap.
-    class IndexNodePairHeap
-    {
-    public:
-        IndexNodePairHeap();
-        void insert(const IndexNodePair &x);
-        const IndexNodePair &top() const { return v.first(); }
-        IndexNodePair pop();
-        bool isEmpty() const { return v.isEmpty(); }
-    private:
-        static int parent(int i) { return (i - 1) >> 1; }
-        static int left(int i) { return (i << 1) | 1; }
-        static int right(int i) { return (i + 1) << 1; }
-        QDataBuffer<IndexNodePair> v;
-    };
-
     QSGDefaultRenderer(QSGContext *context);
 
     void render();
@@ -98,10 +74,8 @@ private:
     const QMatrix4x4 *m_currentMatrix;
     QDataBuffer<QSGNode *> m_opaqueNodes;
     QDataBuffer<QSGNode *> m_transparentNodes;
-    QDataBuffer<QSGNode *> m_tempNodes;
     struct RenderGroup { int opaqueEnd, transparentEnd; };
     QDataBuffer<RenderGroup> m_renderGroups;
-    IndexNodePairHeap m_heap;
 
     bool m_rebuild_lists;
     bool m_needs_sorting;
index a10e963..ba0246c 100644 (file)
@@ -435,9 +435,7 @@ void QSGNode::setFlag(Flag f, bool enabled)
         return;
     m_nodeFlags ^= f;
     Q_ASSERT(int(UsePreprocess) == int(DirtyUsePreprocess));
-    Q_ASSERT(int(ChildrenDoNotOverlap) == int(DirtyChildrenDoNotOverlap));
-    Q_ASSERT(int(StaticSubtreeGeometry) == int(DirtyStaticSubtreeGeometry));
-    int changedFlag = f & (UsePreprocess | ChildrenDoNotOverlap | StaticSubtreeGeometry);
+    int changedFlag = f & UsePreprocess;
     if (changedFlag)
         markDirty(DirtyState(changedFlag));
 }
@@ -458,10 +456,7 @@ void QSGNode::setFlags(Flags f, bool enabled)
     else
         m_nodeFlags &= ~f;
     Q_ASSERT(int(UsePreprocess) == int(DirtyUsePreprocess));
-    Q_ASSERT(int(ChildrenDoNotOverlap) == int(DirtyChildrenDoNotOverlap));
-    Q_ASSERT(int(StaticSubtreeGeometry) == int(DirtyStaticSubtreeGeometry));
-    int changedFlags = (oldFlags ^ m_nodeFlags)
-                       & (UsePreprocess | ChildrenDoNotOverlap | StaticSubtreeGeometry);
+    int changedFlags = (oldFlags ^ m_nodeFlags) & UsePreprocess;
     if (changedFlags)
         markDirty(DirtyState(changedFlags));
 }
index 6ba110b..7403b62 100644 (file)
@@ -81,8 +81,6 @@ public:
         // Lower 16 bites reserved for general node
         OwnedByParent               = 0x0001,
         UsePreprocess               = 0x0002,
-        ChildrenDoNotOverlap        = 0x0004,
-        StaticSubtreeGeometry       = 0x0008, // Subtree nodes have fixed matrix and vertex data.
 
         // Upper 16 bits reserved for node subclasses
 
@@ -95,8 +93,6 @@ public:
 
     enum DirtyStateBit {
         DirtyUsePreprocess          = UsePreprocess,
-        DirtyChildrenDoNotOverlap   = ChildrenDoNotOverlap,
-        DirtyStaticSubtreeGeometry  = StaticSubtreeGeometry,
 
         DirtyMatrix                 = 0x0100,
         DirtyClipList               = 0x0200,