diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-08-16 18:27:44 +0300 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-08-18 08:03:53 +0000 |
commit | 7b2d2d773594bde1b67ef068edef7a6ef920cf9c (patch) | |
tree | 454eeec50d44b06705b900493e6dca1ad559ec6f /src | |
parent | b095e0a85b1caef592f01f9786c56ac301a42dcf (diff) |
QQuickPathView: optimize releasing of cache items
Release all cache items, and then clean container.
Avoid quadratic complexity.
Change-Id: I61f3e43aa070c0be074c3804a83f2ff1de9a398d
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/items/qquickpathview.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/quick/items/qquickpathview.cpp b/src/quick/items/qquickpathview.cpp index c061c8159a..660ed9db16 100644 --- a/src/quick/items/qquickpathview.cpp +++ b/src/quick/items/qquickpathview.cpp @@ -2152,8 +2152,9 @@ void QQuickPathView::refill() if (QQuickPathViewAttached *att = d->attached(d->highlightItem)) att->setOnPath(currentVisible); } - while (d->itemCache.count()) - d->releaseItem(d->itemCache.takeLast()); + for (QQuickItem *item : qAsConst(d->itemCache)) + d->releaseItem(item); + d->itemCache.clear(); d->inRefill = false; if (currentChanged) @@ -2237,8 +2238,9 @@ void QQuickPathView::modelUpdated(const QQmlChangeSet &changeSet, bool reset) d->items.clear(); if (!d->modelCount) { - while (d->itemCache.count()) - d->releaseItem(d->itemCache.takeLast()); + for (QQuickItem * item : qAsConst(d->itemCache)) + d->releaseItem(item); + d->itemCache.clear(); d->offset = 0; changedOffset = true; d->tl.reset(d->moveOffset); |