diff options
Diffstat (limited to 'Ryujinx.Audio/Renderer')
| -rw-r--r-- | Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs | 5 | ||||
| -rw-r--r-- | Ryujinx.Audio/Renderer/Server/AudioRendererManager.cs | 8 |
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() |
