aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Input/AudioInputSystem.cs
diff options
context:
space:
mode:
authorMary <me@thog.eu>2021-06-29 19:37:13 +0200
committerGitHub <noreply@github.com>2021-06-29 19:37:13 +0200
commit00ce9eea620652b97b4d3e8cd9218c6fccff8b1c (patch)
treef488b1b378a8ecbeaf54d5a7916062784a5588dc /Ryujinx.Audio/Input/AudioInputSystem.cs
parentfbb4019ed5c12c4a888c7b09db648ac595366896 (diff)
Fix disposing of IPC sessions server at emulation stop (#2334)
Diffstat (limited to 'Ryujinx.Audio/Input/AudioInputSystem.cs')
-rw-r--r--Ryujinx.Audio/Input/AudioInputSystem.cs13
1 files changed, 11 insertions, 2 deletions
diff --git a/Ryujinx.Audio/Input/AudioInputSystem.cs b/Ryujinx.Audio/Input/AudioInputSystem.cs
index 8064a947..b3fd91e7 100644
--- a/Ryujinx.Audio/Input/AudioInputSystem.cs
+++ b/Ryujinx.Audio/Input/AudioInputSystem.cs
@@ -18,6 +18,7 @@
using Ryujinx.Audio.Common;
using Ryujinx.Audio.Integration;
using System;
+using System.Threading;
namespace Ryujinx.Audio.Input
{
@@ -62,11 +63,16 @@ namespace Ryujinx.Audio.Input
private AudioInputManager _manager;
/// <summary>
- /// THe lock of the parent.
+ /// The lock of the parent.
/// </summary>
private object _parentLock;
/// <summary>
+ /// The dispose state.
+ /// </summary>
+ private int _disposeState;
+
+ /// <summary>
/// Create a new <see cref="AudioInputSystem"/>.
/// </summary>
/// <param name="manager">The manager instance</param>
@@ -384,7 +390,10 @@ namespace Ryujinx.Audio.Input
public void Dispose()
{
- Dispose(true);
+ if (Interlocked.CompareExchange(ref _disposeState, 1, 0) == 0)
+ {
+ Dispose(true);
+ }
}
protected virtual void Dispose(bool disposing)