aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs52
-rw-r--r--src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs1
-rw-r--r--src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs6
-rw-r--r--src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs12
4 files changed, 36 insertions, 35 deletions
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
index 9c3e686d..31af3e9d 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIo.cs
@@ -10,19 +10,19 @@ namespace Ryujinx.Audio.Backends.SoundIo.Native
private const string LibraryName = "libsoundio";
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public unsafe delegate void OnDeviceChangeNativeDelegate(IntPtr ctx);
+ public delegate void OnDeviceChangeNativeDelegate(IntPtr ctx);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public unsafe delegate void OnBackendDisconnectedDelegate(IntPtr ctx, SoundIoError err);
+ public delegate void OnBackendDisconnectedDelegate(IntPtr ctx, SoundIoError err);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public unsafe delegate void OnEventsSignalDelegate(IntPtr ctx);
+ public delegate void OnEventsSignalDelegate(IntPtr ctx);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public unsafe delegate void EmitRtPrioWarningDelegate();
+ public delegate void EmitRtPrioWarningDelegate();
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public unsafe delegate void JackCallbackDelegate(IntPtr msg);
+ public delegate void JackCallbackDelegate(IntPtr msg);
[StructLayout(LayoutKind.Sequential)]
public struct SoundIoStruct
@@ -110,69 +110,69 @@ namespace Ryujinx.Audio.Backends.SoundIo.Native
}
[LibraryImport(LibraryName)]
- public static partial IntPtr soundio_create();
+ internal static partial IntPtr soundio_create();
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_connect(IntPtr ctx);
+ internal static partial SoundIoError soundio_connect(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial void soundio_disconnect(IntPtr ctx);
+ internal static partial void soundio_disconnect(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial void soundio_flush_events(IntPtr ctx);
+ internal static partial void soundio_flush_events(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial int soundio_output_device_count(IntPtr ctx);
+ internal static partial int soundio_output_device_count(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial int soundio_default_output_device_index(IntPtr ctx);
+ internal static partial int soundio_default_output_device_index(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial IntPtr soundio_get_output_device(IntPtr ctx, int index);
+ internal static partial IntPtr soundio_get_output_device(IntPtr ctx, int index);
[LibraryImport(LibraryName)]
[return: MarshalAs(UnmanagedType.Bool)]
- public static partial bool soundio_device_supports_format(IntPtr devCtx, SoundIoFormat format);
+ internal static partial bool soundio_device_supports_format(IntPtr devCtx, SoundIoFormat format);
[LibraryImport(LibraryName)]
[return: MarshalAs(UnmanagedType.Bool)]
- public static partial bool soundio_device_supports_layout(IntPtr devCtx, IntPtr layout);
+ internal static partial bool soundio_device_supports_layout(IntPtr devCtx, IntPtr layout);
[LibraryImport(LibraryName)]
[return: MarshalAs(UnmanagedType.Bool)]
- public static partial bool soundio_device_supports_sample_rate(IntPtr devCtx, int sampleRate);
+ internal static partial bool soundio_device_supports_sample_rate(IntPtr devCtx, int sampleRate);
[LibraryImport(LibraryName)]
- public static partial IntPtr soundio_outstream_create(IntPtr devCtx);
+ internal static partial IntPtr soundio_outstream_create(IntPtr devCtx);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_open(IntPtr outStreamCtx);
+ internal static partial SoundIoError soundio_outstream_open(IntPtr outStreamCtx);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_start(IntPtr outStreamCtx);
+ internal static partial SoundIoError soundio_outstream_start(IntPtr outStreamCtx);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_begin_write(IntPtr outStreamCtx, IntPtr areas, IntPtr frameCount);
+ internal static partial SoundIoError soundio_outstream_begin_write(IntPtr outStreamCtx, IntPtr areas, IntPtr frameCount);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_end_write(IntPtr outStreamCtx);
+ internal static partial SoundIoError soundio_outstream_end_write(IntPtr outStreamCtx);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_pause(IntPtr devCtx, [MarshalAs(UnmanagedType.Bool)] bool pause);
+ internal static partial SoundIoError soundio_outstream_pause(IntPtr devCtx, [MarshalAs(UnmanagedType.Bool)] bool pause);
[LibraryImport(LibraryName)]
- public static partial SoundIoError soundio_outstream_set_volume(IntPtr devCtx, double volume);
+ internal static partial SoundIoError soundio_outstream_set_volume(IntPtr devCtx, double volume);
[LibraryImport(LibraryName)]
- public static partial void soundio_outstream_destroy(IntPtr streamCtx);
+ internal static partial void soundio_outstream_destroy(IntPtr streamCtx);
[LibraryImport(LibraryName)]
- public static partial void soundio_destroy(IntPtr ctx);
+ internal static partial void soundio_destroy(IntPtr ctx);
[LibraryImport(LibraryName)]
- public static partial IntPtr soundio_channel_layout_get_default(int channelCount);
+ internal static partial IntPtr soundio_channel_layout_get_default(int channelCount);
[LibraryImport(LibraryName)]
- public static partial IntPtr soundio_strerror(SoundIoError err);
+ internal static partial IntPtr soundio_strerror(SoundIoError err);
}
}
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
index 3744c2e6..afa86bef 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/Native/SoundIoContext.cs
@@ -1,5 +1,4 @@
using System;
-using System.Reflection.Metadata;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
index 02da2776..9dac0992 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceDriver.cs
@@ -141,7 +141,7 @@ namespace Ryujinx.Audio.Backends.SoundIo
throw new NotImplementedException("Input direction is currently not implemented on SoundIO backend!");
}
- SoundIoHardwareDeviceSession session = new SoundIoHardwareDeviceSession(this, memoryManager, sampleFormat, sampleRate, channelCount, volume);
+ SoundIoHardwareDeviceSession session = new(this, memoryManager, sampleFormat, sampleRate, channelCount, volume);
_sessions.TryAdd(session, 0);
@@ -162,7 +162,7 @@ namespace Ryujinx.Audio.Backends.SoundIo
SampleFormat.PcmInt24 => SoundIoFormat.S24LE,
SampleFormat.PcmInt32 => SoundIoFormat.S32LE,
SampleFormat.PcmFloat => SoundIoFormat.Float32LE,
- _ => throw new ArgumentException ($"Unsupported sample format {format}"),
+ _ => throw new ArgumentException($"Unsupported sample format {format}"),
};
}
@@ -202,6 +202,8 @@ namespace Ryujinx.Audio.Backends.SoundIo
public void Dispose()
{
+ GC.SuppressFinalize(this);
+
if (Interlocked.CompareExchange(ref _disposeState, 1, 0) == 0)
{
Dispose(true);
diff --git a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
index 96d9ce97..0aa13e7e 100644
--- a/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
+++ b/src/Ryujinx.Audio.Backends.SoundIo/SoundIoHardwareDeviceSession.cs
@@ -12,12 +12,12 @@ namespace Ryujinx.Audio.Backends.SoundIo
{
class SoundIoHardwareDeviceSession : HardwareDeviceSessionOutputBase
{
- private SoundIoHardwareDeviceDriver _driver;
- private ConcurrentQueue<SoundIoAudioBuffer> _queuedBuffers;
+ private readonly SoundIoHardwareDeviceDriver _driver;
+ private readonly ConcurrentQueue<SoundIoAudioBuffer> _queuedBuffers;
private SoundIoOutStreamContext _outputStream;
- private DynamicRingBuffer _ringBuffer;
+ private readonly DynamicRingBuffer _ringBuffer;
private ulong _playedSampleCount;
- private ManualResetEvent _updateRequiredEvent;
+ private readonly ManualResetEvent _updateRequiredEvent;
private int _disposeState;
public SoundIoHardwareDeviceSession(SoundIoHardwareDeviceDriver driver, IVirtualMemoryManager memoryManager, SampleFormat requestedSampleFormat, uint requestedSampleRate, uint requestedChannelCount, float requestedVolume) : base(memoryManager, requestedSampleFormat, requestedSampleRate, requestedChannelCount)
@@ -54,7 +54,7 @@ namespace Ryujinx.Audio.Backends.SoundIo
public override void QueueBuffer(AudioBuffer buffer)
{
- SoundIoAudioBuffer driverBuffer = new SoundIoAudioBuffer(buffer.DataPointer, GetSampleCount(buffer));
+ SoundIoAudioBuffer driverBuffer = new(buffer.DataPointer, GetSampleCount(buffer));
_ringBuffer.Write(buffer.Data, 0, buffer.Data.Length);
@@ -81,7 +81,7 @@ namespace Ryujinx.Audio.Backends.SoundIo
_driver.FlushContextEvents();
}
- public override void UnregisterBuffer(AudioBuffer buffer) {}
+ public override void UnregisterBuffer(AudioBuffer buffer) { }
public override bool WasBufferFullyConsumed(AudioBuffer buffer)
{