aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/coreapi
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@digia.com>2013-09-06 10:35:26 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-09 22:58:45 +0200
commitb8dcbb12a25916472e047e4bdceadfbd27bdba9c (patch)
tree3fcddc3be76782d500e2d5d7b7ba755acc7231a1 /src/quick/scenegraph/coreapi
parentddc822547782623cc9b210aa28ba3bb039df5c64 (diff)
Trigger rebuild when xform of alpha nodes change.
When transforms change, overlaps may have changed, so we need to rebuild all batches under the current root. Instead of adding taggedRoots logic for rebuilding batches only, we reuse the existing tagged roots for render lists. This one is slightly more expensive, but for now I believe the reduced code complexity outweights the tiny overhead. Change-Id: I1bd0efc18e5628f404d6d4dce38c725436e87ce5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/quick/scenegraph/coreapi')
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index 2ffbdb26bb..cf71489f88 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -826,14 +826,16 @@ void Renderer::nodeWasTransformed(Node *node, int *vertexCount)
e->boundsComputed = false;
if (e->batch) {
if (!e->batch->isOpaque) {
- e->batch->invalidate();
- m_rebuild |= BuildBatches;
+ if (e->root) {
+ m_taggedRoots << e->root;
+ m_rebuild |= BuildRenderListsForTaggedRoots;
+ } else {
+ m_rebuild |= FullRebuild;
+ }
} else if (e->batch->merged) {
e->batch->needsUpload = true;
}
}
- if (e->batch && e->batch->merged)
- e->batch->needsUpload = true;
}
}