aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Output/AudioOutputSystem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio/Output/AudioOutputSystem.cs')
-rw-r--r--Ryujinx.Audio/Output/AudioOutputSystem.cs11
1 files changed, 10 insertions, 1 deletions
diff --git a/Ryujinx.Audio/Output/AudioOutputSystem.cs b/Ryujinx.Audio/Output/AudioOutputSystem.cs
index f5db9d7a..d32d417a 100644
--- a/Ryujinx.Audio/Output/AudioOutputSystem.cs
+++ b/Ryujinx.Audio/Output/AudioOutputSystem.cs
@@ -18,6 +18,7 @@
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using System;
+using System.Threading;
namespace Ryujinx.Audio.Output
{
@@ -67,6 +68,11 @@ namespace Ryujinx.Audio.Output
private object _parentLock;
/// <summary>
+ /// The dispose state.
+ /// </summary>
+ private int _disposeState;
+
+ /// <summary>
/// Create a new <see cref="AudioOutputSystem"/>.
/// </summary>
/// <param name="manager">The manager instance</param>
@@ -357,7 +363,10 @@ namespace Ryujinx.Audio.Output
public void Dispose()
{
- Dispose(true);
+ if (Interlocked.CompareExchange(ref _disposeState, 1, 0) == 0)
+ {
+ Dispose(true);
+ }
}
protected virtual void Dispose(bool disposing)