diff options
author | Michael Brasser <michael.brasser@live.com> | 2013-05-06 16:43:00 -0500 |
---|---|---|
committer | Gunnar Sletta <gunnar.sletta@digia.com> | 2013-05-15 13:59:44 +0200 |
commit | a0d9130228916a47b404653365fe0c0487be6966 (patch) | |
tree | 86488e63d913fce158600dcf55895e948f8cb26c | |
parent | b76ea0b162456c7f7154af50b8ba4753dee29b3a (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.cpp | 6 |
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; } |