From c25e8427aa40a4ae920496220fd1e1621eff178b Mon Sep 17 00:00:00 2001 From: Mary-nyan Date: Fri, 2 Dec 2022 14:01:19 +0100 Subject: [PATCH] amadeus: Fix wrong SendCommands logic (#3969) * amadeus: Fix wrong SendCommands logic Might help with audio desync, might cause audio stutters, will see! * Address gdkchan's comment --- Ryujinx.Audio/Renderer/Dsp/AudioProcessor.cs | 5 +++++ .../Renderer/Server/AudioRenderSystem.cs | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) 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 {