From 49395a91f527b08ab15be4fc084512f11cc37875 Mon Sep 17 00:00:00 2001 From: Paul Elliott Date: Sat, 22 Aug 2026 15:08:07 -0400 Subject: [PATCH 1/6] fix(vtk): stop renders and release resources when a view is torn down A render request can outlive its view: they arrive from vtk event handlers and from promises that settle after dispose. requestRender and the batched render now short circuit once the scope is disposed, so no stray timer is left queued behind a view that is going away. Unregister a child render window from its parent before removing its view node, so the two steps cannot be observed out of order. Release the WebGL context behind a render window when it is deleted. vtk.js only decrements its own counter, so contexts stayed live against the browser per page cap. --- src/components/vtk/VtkRenderWindowParent.vue | 11 +- src/core/vtk/__tests__/useVtkView.spec.ts | 107 +++++++++++++++++++ src/core/vtk/deleteInteractor.ts | 21 ++++ src/core/vtk/releaseRenderWindow.ts | 55 ++++++++++ src/core/vtk/releaseWidgetManager.ts | 45 ++++++++ src/core/vtk/useVtkView.ts | 52 ++++----- 6 files changed, 266 insertions(+), 25 deletions(-) create mode 100644 src/core/vtk/__tests__/useVtkView.spec.ts create mode 100644 src/core/vtk/deleteInteractor.ts create mode 100644 src/core/vtk/releaseRenderWindow.ts create mode 100644 src/core/vtk/releaseWidgetManager.ts diff --git a/src/components/vtk/VtkRenderWindowParent.vue b/src/components/vtk/VtkRenderWindowParent.vue index c4629c69d..ea64ef36d 100644 --- a/src/components/vtk/VtkRenderWindowParent.vue +++ b/src/components/vtk/VtkRenderWindowParent.vue @@ -1,8 +1,9 @@