From 8f5d826269f8866a718d2a1c715999c09d6bac21 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 9 Apr 2025 14:37:13 +0900 Subject: [PATCH] dispose function can now be executed again --- .../SpringBoneJobs/FastSpringBoneBufferCombiner.cs | 4 ++-- .../Vrm10Runtime/Vrm10FastSpringboneRuntime.cs | 2 ++ .../Vrm10FastSpringboneRuntimeStandalone.cs | 12 ++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs index efd342140..6127beb20 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs @@ -118,9 +118,9 @@ namespace UniGLTF.SpringBoneJobs public void Dispose() { - if (_combinedBuffer is FastSpringBoneCombinedBuffer combined) + if (_combinedBuffer != null) { - combined.Dispose(); + _combinedBuffer.Dispose(); _combinedBuffer = null; } } diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs index 246eb9c7c..e7a7750af 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs @@ -57,6 +57,8 @@ namespace UniVRM10 { m_fastSpringBoneService.BufferCombiner.Register(add: null, remove: m_fastSpringBoneBuffer); m_fastSpringBoneBuffer.Dispose(); + // #2616 + m_fastSpringBoneBuffer = null; } } diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs index e1660af07..caf09e2ba 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs @@ -54,10 +54,18 @@ namespace UniVRM10 public void Dispose() { - m_bufferCombiner.Register(add: null, remove: m_fastSpringBoneBuffer); - m_fastSpringBoneBuffer.Dispose(); + if (m_fastSpringBoneBuffer != null) + { + m_bufferCombiner.Register(add: null, remove: m_fastSpringBoneBuffer); + m_fastSpringBoneBuffer.Dispose(); + // #2616 + m_fastSpringBoneBuffer = null; + } + // re-entrant ok m_fastSpringBoneScheduler.Dispose(); + + // re-entrant ok m_bufferCombiner.Dispose(); }