aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/coreapi
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/scenegraph/coreapi')
-rw-r--r--src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index ca5b038efa..9675d6e48a 100644
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
@@ -460,12 +460,18 @@ void Updater::visitGeometryNode(Node *n)
if (e->root) {
BatchRootInfo *info = renderer->batchRootInfo(e->root);
- info->availableOrders--;
- if (info->availableOrders < 0) {
- renderer->m_rebuild |= Renderer::BuildRenderLists;
- } else {
- renderer->m_rebuild |= Renderer::BuildRenderListsForTaggedRoots;
- renderer->m_taggedRoots << e->root;
+ while (info != 0) {
+ info->availableOrders--;
+ if (info->availableOrders < 0) {
+ renderer->m_rebuild |= Renderer::BuildRenderLists;
+ } else {
+ renderer->m_rebuild |= Renderer::BuildRenderListsForTaggedRoots;
+ renderer->m_taggedRoots << e->root;
+ }
+ if (info->parentRoot != 0)
+ info = renderer->batchRootInfo(info->parentRoot);
+ else
+ info = 0;
}
} else {
renderer->m_rebuild |= Renderer::FullRebuild;