diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-04-18 18:25:16 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-20 02:26:23 +0200 |
commit | b93e463465f5c4241d2dae9aaaa198684e1199fb (patch) | |
tree | a9f6a10f77addb06b276ef172540974cafcd122d /src/quick/items/qquickitemview.cpp | |
parent | 2467652d63ad6395b58926f8e32e75fba430540c (diff) |
Don't initiate delegate incubation in delegate creation frames.
If we've just instantiated a synchronous delegate, don't schedule
a buffered delegate until the next frame.
Change-Id: Id269457cb74a7900e4405022c15148fd2a3dc180
Reviewed-by: Bea Lam <bea.lam@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitemview.cpp')
-rw-r--r-- | src/quick/items/qquickitemview.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp index e70e923c4d..95c7ed5f78 100644 --- a/src/quick/items/qquickitemview.cpp +++ b/src/quick/items/qquickitemview.cpp @@ -1659,12 +1659,19 @@ void QQuickItemViewPrivate::refill(qreal from, qreal to) bool added = addVisibleItems(fillFrom, fillTo, false); bool removed = removeNonVisibleItems(bufferFrom, bufferTo); - if (buffer && bufferMode != NoBuffer) { - if (bufferMode & BufferAfter) - fillTo = bufferTo; - if (bufferMode & BufferBefore) - fillFrom = bufferFrom; - added |= addVisibleItems(fillFrom, fillTo, true); + if (requestedIndex == -1 && buffer && bufferMode != NoBuffer) { + if (added) { + // We've already created a new delegate this frame. + // Just schedule a buffer refill. + fillCacheBuffer = true; + q->polish(); + } else { + if (bufferMode & BufferAfter) + fillTo = bufferTo; + if (bufferMode & BufferBefore) + fillFrom = bufferFrom; + added |= addVisibleItems(fillFrom, fillTo, true); + } } if (added || removed) { |