aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Renderer
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio/Renderer')
-rw-r--r--Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs5
-rw-r--r--Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs8
2 files changed, 13 insertions, 0 deletions
diff --git a/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs b/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs
index ea975056..e15165b9 100644
--- a/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs
+++ b/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs
@@ -55,6 +55,8 @@ namespace Ryujinx.Audio.Renderer.Dsp
private long _playbackEnds;
private ManualResetEvent _event;
+ private ManualResetEvent _pauseEvent;
+
public AudioProcessor()
{
_event = new ManualResetEvent(false);
@@ -94,6 +96,7 @@ namespace Ryujinx.Audio.Renderer.Dsp
_sessionCommandList = new RendererSession[Constants.AudioRendererSessionCountMax];
_event.Reset();
_lastTime = PerformanceCounter.ElapsedNanoseconds;
+ _pauseEvent = deviceDriver.GetPauseEvent();
StartThread();
@@ -202,6 +205,8 @@ namespace Ryujinx.Audio.Renderer.Dsp
while (true)
{
+ _pauseEvent?.WaitOne();
+
MailboxMessage message = _mailbox.ReceiveMessage();
if (message == MailboxMessage.Stop)
diff --git a/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs b/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs
index 71d0f318..f471a2e7 100644
--- a/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs
+++ b/Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs
@@ -215,6 +215,14 @@ namespace Ryujinx.Audio.Renderer.Server
}
/// <summary>
+ /// Stop sending commands to the <see cref="AudioProcessor"/> without stopping the worker thread.
+ /// </summary>
+ public void StopSendingCommands()
+ {
+ _isRunning = false;
+ }
+
+ /// <summary>
/// Worker main function. This is used to dispatch audio renderer commands to the <see cref="AudioProcessor"/>.
/// </summary>
private void SendCommands()