aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitemview.cpp
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2012-04-18 18:25:16 +1000
committerQt by Nokia <qt-info@nokia.com>2012-04-20 02:26:23 +0200
commitb93e463465f5c4241d2dae9aaaa198684e1199fb (patch)
treea9f6a10f77addb06b276ef172540974cafcd122d /src/quick/items/qquickitemview.cpp
parent2467652d63ad6395b58926f8e32e75fba430540c (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.cpp19
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) {