Просмотр исходного кода

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
Mary-nyan 3 лет назад
Родитель
Сommit
c25e8427aa

+ 5 - 0
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);

+ 13 - 6
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
                 {