diff --git a/examples/quick/scenegraph/customrendernode/main.qml b/examples/quick/scenegraph/customrendernode/main.qml index a0b62c4bf8..6a098e47f7 100644 --- a/examples/quick/scenegraph/customrendernode/main.qml +++ b/examples/quick/scenegraph/customrendernode/main.qml @@ -102,6 +102,11 @@ Item { } + Button { + text: qsTr("Toggle custom item visibility") + onClicked: custom.visible = !custom.visible + } + CustomRender { id: custom width: Math.min(parent.width, parent.height) diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 2a67e1546a..1d4f9ac486 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -1265,8 +1265,13 @@ void Renderer::nodeWasRemoved(Node *node) if (e) { e->removed = true; m_elementsToDelete.add(e); - if (m_renderNodeElements.isEmpty()) + if (m_renderNodeElements.isEmpty()) { m_forceNoDepthBuffer = false; + // Must have a full rebuild given useDepthBuffer() now returns + // a different value than before, meaning there can once again + // be an opaque pass. + m_rebuild |= FullRebuild; + } if (e->batch != nullptr) e->batch->needsPurge = true;