diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-06-08 11:19:09 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-08 06:17:54 +0200 |
commit | 762b4d90110465aeceb96f44cd06dcda229dfe89 (patch) | |
tree | 5bfba55b60b01a55ea965f0a51ad19ce6c84b004 /src/quick/items/qquickgridview.cpp | |
parent | 9f9b2df76c7677fb3dc82ca617cf0732652b684d (diff) |
Performance should always be better with cacheBuffer
Setting a cacheBuffer introduced more work for the scenegraph due to
cached delegates' visibility being toggled. Changing visibility is
expensive as it is proagated to all children. Introduce a cheap
method of hiding a branch instead.
Also avoid initiating incubation in the same frame as a completed
creation.
Change-Id: I573bcf37f441f96a7502d445be50ef4301f217d5
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickgridview.cpp')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index 235005b758..331f23e4c8 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -534,7 +534,7 @@ bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d break; if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems() item->setPosition(colPos, rowPos, true); - item->item->setVisible(!doBuffer); + QQuickItemPrivate::get(item->item)->setCulled(doBuffer); visibleItems.append(item); if (++colNum >= columns) { colNum = 0; @@ -572,7 +572,7 @@ bool QQuickGridViewPrivate::addVisibleItems(qreal fillFrom, qreal fillTo, bool d --visibleIndex; if (!transitioner || !transitioner->canTransition(QQuickItemViewTransitioner::PopulateTransition, true)) // pos will be set by layoutVisibleItems() item->setPosition(colPos, rowPos, true); - item->item->setVisible(!doBuffer); + QQuickItemPrivate::get(item->item)->setCulled(doBuffer); visibleItems.prepend(item); if (--colNum < 0) { colNum = columns-1; @@ -2013,11 +2013,11 @@ void QQuickGridView::viewportMoved() qreal to = d->isContentFlowReversed() ? -d->position() : d->position()+d->size(); for (int i = 0; i < d->visibleItems.count(); ++i) { FxGridItemSG *item = static_cast<FxGridItemSG*>(d->visibleItems.at(i)); - item->item->setVisible(item->rowPos() + d->rowSize() >= from && item->rowPos() <= to); + QQuickItemPrivate::get(item->item)->setCulled(item->rowPos() + d->rowSize() < from || item->rowPos() > to); } if (d->currentItem) { FxGridItemSG *item = static_cast<FxGridItemSG*>(d->currentItem); - item->item->setVisible(item->rowPos() + d->rowSize() >= from && item->rowPos() <= to); + QQuickItemPrivate::get(item->item)->setCulled(item->rowPos() + d->rowSize() < from || item->rowPos() > to); } if (d->hData.flicking || d->vData.flicking || d->hData.moving || d->vData.moving) @@ -2363,7 +2363,7 @@ bool QQuickGridViewPrivate::applyInsertionChange(const QQuickChangeSet::Insert & if (!item) return false; - item->item->setVisible(true); + QQuickItemPrivate::get(item->item)->setCulled(false); visibleItems.insert(insertionIdx, item); if (insertionIdx == 0) insertResult->changedFirstItem = true; @@ -2395,7 +2395,7 @@ bool QQuickGridViewPrivate::applyInsertionChange(const QQuickChangeSet::Insert & if (!item) return false; - item->item->setVisible(true); + QQuickItemPrivate::get(item->item)->setCulled(false); visibleItems.insert(index, item); if (index == 0) insertResult->changedFirstItem = true; |