diff options
author | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-07-03 15:38:38 (GMT) |
---|---|---|
committer | Bjørn Erik Nilsen <bjorn.nilsen@nokia.com> | 2009-07-03 15:38:38 (GMT) |
commit | d228015c67614051df8ae0b2f0483572fd667b83 (patch) | |
tree | 994d46afcc0b887c70d7a65e744f831107c29768 /src/gui/graphicsview/qgraphicsscene_p.h | |
parent | 1d651e82459c0480cb3e803a9d9452092ac9d502 (diff) | |
download | Qt-d228015c67614051df8ae0b2f0483572fd667b83.zip Qt-d228015c67614051df8ae0b2f0483572fd667b83.tar.gz Qt-d228015c67614051df8ae0b2f0483572fd667b83.tar.bz2 |
Simplify QGraphicsScenePrivate::processDirtyItemsRecursive.
This version is easier to read and is slightly faster than the old one.
All auto-tests pass.
Diffstat (limited to 'src/gui/graphicsview/qgraphicsscene_p.h')
-rw-r--r-- | src/gui/graphicsview/qgraphicsscene_p.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h index 245380f..bd72a71 100644 --- a/src/gui/graphicsview/qgraphicsscene_p.h +++ b/src/gui/graphicsview/qgraphicsscene_p.h @@ -207,18 +207,24 @@ public: void processDirtyItemsRecursive(QGraphicsItem *item, bool dirtyAncestorContainsChildren = false, qreal parentOpacity = qreal(1.0)); - inline void resetDirtyItem(QGraphicsItem *item) + inline void resetDirtyItem(QGraphicsItem *item, bool recursive = false) { Q_ASSERT(item); item->d_ptr->dirty = 0; item->d_ptr->paintedViewBoundingRectsNeedRepaint = 0; item->d_ptr->geometryChanged = 0; + if (!item->d_ptr->dirtyChildren) + recursive = false; item->d_ptr->dirtyChildren = 0; item->d_ptr->needsRepaint = QRectF(); item->d_ptr->allChildrenDirty = 0; item->d_ptr->fullUpdatePending = 0; item->d_ptr->ignoreVisible = 0; item->d_ptr->ignoreOpacity = 0; + if (recursive) { + for (int i = 0; i < item->d_ptr->children.size(); ++i) + resetDirtyItem(item->d_ptr->children.at(i), recursive); + } } inline void ensureSortedTopLevelItems() |