diff options
Diffstat (limited to 'Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs')
-rw-r--r-- | Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs b/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs index ec847948..004ac656 100644 --- a/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs +++ b/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs @@ -22,6 +22,7 @@ using Ryujinx.Common.Logging; using Ryujinx.Memory; using System; using System.Diagnostics; +using System.Linq; using System.Threading; namespace Ryujinx.Audio.Renderer.Server @@ -319,6 +320,19 @@ namespace Ryujinx.Audio.Renderer.Server { if (disposing) { + // Clone the sessions array to dispose them outside the lock. + AudioRenderSystem[] sessions; + + lock (_sessionLock) + { + sessions = _sessions.ToArray(); + } + + foreach (AudioRenderSystem renderer in sessions) + { + renderer?.Dispose(); + } + lock (_audioProcessorLock) { if (_isRunning) |