aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs')
-rw-r--r--Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs14
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)