diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
index 838251ed081a56101b76d9556a3452c2868164b0..2f94bad75d80fb71244127e32cad417a44c74f76 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;