diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-06-15 19:00:08 +0200 |
---|---|---|
committer | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-06-15 19:00:08 +0200 |
commit | ccb5ea669ee192e93c76e7412bcebfc6810a8eba (patch) | |
tree | ca62db8276c87d53d09d6559c30f990a43b67719 /src/declarative/items/qsgcanvas.cpp | |
parent | d1bb9e36d0c3497b790fdf1887dcef0567aaad46 (diff) | |
parent | 170b1ddc7931781a70758dc2d206bfdbad6fb3f5 (diff) |
Merge branch 'master' into qtquick2
Conflicts:
src/declarative/scenegraph/coreapi/qsgdefaultrenderer.cpp
src/declarative/scenegraph/coreapi/qsgdefaultrenderer_p.h
tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp
Change-Id: Id2267925c4f77b41f63bbbf555b816ca1f55a0ec
Diffstat (limited to 'src/declarative/items/qsgcanvas.cpp')
-rw-r--r-- | src/declarative/items/qsgcanvas.cpp | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/declarative/items/qsgcanvas.cpp b/src/declarative/items/qsgcanvas.cpp index fee58b87a8..30dc5cab02 100644 --- a/src/declarative/items/qsgcanvas.cpp +++ b/src/declarative/items/qsgcanvas.cpp @@ -394,7 +394,7 @@ void QSGCanvasPrivate::renderSceneGraph(const QSize &size) { context->renderer()->setDeviceRect(QRect(QPoint(0, 0), size)); context->renderer()->setViewportRect(QRect(QPoint(0, 0), size)); - context->renderer()->setProjectMatrixToDeviceRect(); + context->renderer()->setProjectionMatrixToDeviceRect(); context->renderNextFrame(); @@ -1759,10 +1759,8 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) } } - if (dirty & QSGItemPrivate::ChildrenUpdateMask) { - while (itemPriv->childContainerNode()->childCount()) - itemPriv->childContainerNode()->removeChildNode(itemPriv->childContainerNode()->childAtIndex(0)); - } + if (dirty & QSGItemPrivate::ChildrenUpdateMask) + itemPriv->childContainerNode()->removeAllChildNodes(); if (effectRefEffectivelyChanged) { QSGNode *parent = itemPriv->clipNode; @@ -1795,15 +1793,12 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) if (dirty & QSGItemPrivate::ChildrenUpdateMask) { QSGNode *groupNode = itemPriv->groupNode; - if (groupNode) { - for (int count = groupNode->childCount(); count; --count) - groupNode->removeChildNode(groupNode->childAtIndex(0)); - } + if (groupNode) + groupNode->removeAllChildNodes(); QList<QSGItem *> orderedChildren = itemPriv->paintOrderChildItems(); int ii = 0; - itemPriv->paintNodeIndex = 0; for (; ii < orderedChildren.count() && orderedChildren.at(ii)->z() < 0; ++ii) { QSGItemPrivate *childPrivate = QSGItemPrivate::get(orderedChildren.at(ii)); if (!childPrivate->explicitVisible && !childPrivate->effectRefCount) @@ -1812,8 +1807,8 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) childPrivate->itemNode()->parent()->removeChildNode(childPrivate->itemNode()); itemPriv->childContainerNode()->appendChildNode(childPrivate->itemNode()); - itemPriv->paintNodeIndex++; } + itemPriv->beforePaintNode = itemPriv->groupNode ? itemPriv->groupNode->lastChild() : 0; if (itemPriv->paintNode) itemPriv->childContainerNode()->appendChildNode(itemPriv->paintNode); @@ -1869,10 +1864,10 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) itemPriv->paintNode->parent() == itemPriv->childContainerNode()); if (itemPriv->paintNode && itemPriv->paintNode->parent() == 0) { - if (itemPriv->childContainerNode()->childCount() == itemPriv->paintNodeIndex) - itemPriv->childContainerNode()->appendChildNode(itemPriv->paintNode); - else - itemPriv->childContainerNode()->insertChildNodeBefore(itemPriv->paintNode, itemPriv->childContainerNode()->childAtIndex(itemPriv->paintNodeIndex)); + if (itemPriv->beforePaintNode) + itemPriv->childContainerNode()->insertChildNodeAfter(itemPriv->paintNode, itemPriv->beforePaintNode); + else + itemPriv->childContainerNode()->prependChildNode(itemPriv->paintNode); } } else if (itemPriv->paintNode) { delete itemPriv->paintNode; @@ -1908,8 +1903,8 @@ void QSGCanvasPrivate::updateDirtyNode(QSGItem *item) Q_ASSERT(parent == itemPriv->groupNode || parent->childCount() == 1); Q_ASSERT(child->parent() == parent); bool containsChild = false; - for (int i = 0; i < parent->childCount(); ++i) - containsChild |= (parent->childAtIndex(i) == child); + for (QSGNode *n = parent->firstChild(); n; n = n->nextSibling()) + containsChild |= (n == child); Q_ASSERT(containsChild); } ip = ic; |