diff --git a/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs b/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs index 2f58957d7..7bd0443c2 100644 --- a/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs +++ b/Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs @@ -116,6 +116,11 @@ namespace Ryujinx.Audio.Renderer.Dsp }; } + public bool HasRemainingCommands(int sessionId) + { + return _sessionCommandList[sessionId] != null; + } + public void Signal() { _mailbox.SendMessage(MailboxMessage.RenderStart); diff --git a/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs b/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs index 34fdef8a1..5116f7ca8 100644 --- a/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs +++ b/Ryujinx.Audio/Renderer/Server/AudioRenderSystem.cs @@ -670,14 +670,21 @@ namespace Ryujinx.Audio.Renderer.Server { _terminationEvent.Reset(); - GenerateCommandList(out CommandList commands); + if (!_manager.Processor.HasRemainingCommands(_sessionId)) + { + GenerateCommandList(out CommandList commands); - _manager.Processor.Send(_sessionId, - commands, - GetMaxAllocatedTimeForDsp(), - _appletResourceId); + _manager.Processor.Send(_sessionId, + commands, + GetMaxAllocatedTimeForDsp(), + _appletResourceId); - _systemEvent.Signal(); + _systemEvent.Signal(); + } + else + { + _isDspRunningBehind = true; + } } else {