From 2896a434715d70c73409042d78ecc2e92b8b093b Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 22 Feb 2012 10:45:53 +1000 Subject: [PATCH] Remove unused performance flags. Change-Id: I9a9111703e2480af02b1af7033ea6bb12e7a75a5 Reviewed-by: Glenn Watson Reviewed-by: Gunnar Sletta --- src/quick/items/qquickcanvas.cpp | 5 -- src/quick/items/qquickitem.cpp | 4 +- src/quick/items/qquickitem_p.h | 7 +- src/quick/items/qquickitemview.cpp | 1 - src/quick/items/qquickpositioners_p_p.h | 1 - .../scenegraph/coreapi/qsgdefaultrenderer.cpp | 98 +--------------------- .../scenegraph/coreapi/qsgdefaultrenderer_p.h | 26 ------ src/quick/scenegraph/coreapi/qsgnode.cpp | 9 +- src/quick/scenegraph/coreapi/qsgnode.h | 4 - 9 files changed, 7 insertions(+), 148 deletions(-) diff --git a/src/quick/items/qquickcanvas.cpp b/src/quick/items/qquickcanvas.cpp index c2b1fe5..7b8d916 100644 --- a/src/quick/items/qquickcanvas.cpp +++ b/src/quick/items/qquickcanvas.cpp @@ -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[] = { diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 747f1a1..15271d5 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -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; } diff --git a/src/quick/items/qquickitem_p.h b/src/quick/items/qquickitem_p.h index 8699a56..e7c449b 100644 --- a/src/quick/items/qquickitem_p.h +++ b/src/quick/items/qquickitem_p.h @@ -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 diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index 1774931..9ea2aad 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -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); diff --git a/src/quick/items/qquickpositioners_p_p.h b/src/quick/items/qquickpositioners_p_p.h index 8c6bf7f..066caf5 100644 --- a/src/quick/items/qquickpositioners_p_p.h +++ b/src/quick/items/qquickpositioners_p_p.h @@ -83,7 +83,6 @@ public: void init(QQuickBasePositioner::PositionerType at) { type = at; - childrenDoNotOverlap = true; } qreal spacing; diff --git a/src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp b/src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp index c04afd7..f0c90e3 100644 --- a/src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgdefaultrenderer.cpp @@ -125,58 +125,10 @@ static bool nodeLessThanWithRenderOrder(QSGNode *nodeA, QSGNode *nodeB) return a->matrix() < b->matrix(); } - -QSGDefaultRenderer::IndexNodePair::IndexNodePair(int i, QSGNode *node) - : QPair(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 beginIndices; - QVarLengthArray 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) diff --git a/src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h b/src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h index 53384bf..464e17b 100644 --- a/src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h +++ b/src/quick/scenegraph/coreapi/qsgdefaultrenderer_p.h @@ -55,30 +55,6 @@ class Q_QUICK_PRIVATE_EXPORT QSGDefaultRenderer : public QSGRenderer { Q_OBJECT public: - class IndexNodePair : public QPair - { - 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 v; - }; - QSGDefaultRenderer(QSGContext *context); void render(); @@ -98,10 +74,8 @@ private: const QMatrix4x4 *m_currentMatrix; QDataBuffer m_opaqueNodes; QDataBuffer m_transparentNodes; - QDataBuffer m_tempNodes; struct RenderGroup { int opaqueEnd, transparentEnd; }; QDataBuffer m_renderGroups; - IndexNodePairHeap m_heap; bool m_rebuild_lists; bool m_needs_sorting; diff --git a/src/quick/scenegraph/coreapi/qsgnode.cpp b/src/quick/scenegraph/coreapi/qsgnode.cpp index a10e963..ba0246c 100644 --- a/src/quick/scenegraph/coreapi/qsgnode.cpp +++ b/src/quick/scenegraph/coreapi/qsgnode.cpp @@ -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)); } diff --git a/src/quick/scenegraph/coreapi/qsgnode.h b/src/quick/scenegraph/coreapi/qsgnode.h index 6ba110b..7403b62 100644 --- a/src/quick/scenegraph/coreapi/qsgnode.h +++ b/src/quick/scenegraph/coreapi/qsgnode.h @@ -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, -- 2.7.4