summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@live.com>2013-05-06 16:43:00 -0500
committerGunnar Sletta <gunnar.sletta@digia.com>2013-05-15 13:59:44 +0200
commita0d9130228916a47b404653365fe0c0487be6966 (patch)
tree86488e63d913fce158600dcf55895e948f8cb26c
parentb76ea0b162456c7f7154af50b8ba4753dee29b3a (diff)
Fix batching bug.
There was an error in the following example situation: 1. We have a batch with 3 elements 2. element 1 is added to the batch 3. element 2 has an overlap, and is *not* added to the batch 4. element 3 and element 2 overlap, but element 3 is still added to the batch 5. element 2 is added to a later batch by itself, and incorrectly appears on top of element 3 Change-Id: I103c1a4ca2666514993bd79eb2c5cbd54f4acb5d Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
-rw-r--r--customcontext/renderer/overlaprenderer.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/customcontext/renderer/overlaprenderer.cpp b/customcontext/renderer/overlaprenderer.cpp
index b1d04e7..1c2cb4e 100644
--- a/customcontext/renderer/overlaprenderer.cpp
+++ b/customcontext/renderer/overlaprenderer.cpp
@@ -1512,7 +1512,7 @@ void Renderer::buildDrawLists()
BoundingArea united;
- int current = i + 1;
+ int current = i;
short nextIndex = ei->nextInBatchConfig;
while (nextIndex != -1) {
@@ -1522,11 +1522,11 @@ void Renderer::buildDrawLists()
united.unite(ej->worldRect);
}
- current = nextIndex + 1;
+ current = nextIndex;
RenderElement *ej = m_elementsInRenderOrder[nextIndex];
Q_ASSERT(ej->batchConfig != -1 && batchConfigs[ej->batchConfig].renderNode == 0);
- if (ej->addedToBatch == false && ej->vertexCount && (!united.intersects(ej->worldRect) || !isOverlap(i + 1, nextIndex, ej->worldRect))) {
+ if (ej->addedToBatch == false && ej->vertexCount && (!united.intersects(ej->worldRect) || !isOverlap(i, nextIndex, ej->worldRect))) {
rb.add(ej);
ej->addedToBatch = true;
}