From bf6e5930cf714190b50a14c7bd4adf33ee386c57 Mon Sep 17 00:00:00 2001 From: jhorv <38920027+jhorv@users.noreply.github.com> Date: Fri, 5 Apr 2024 19:55:21 -0400 Subject: [PATCH] SplitterContext `UpdateState()` and `UpdateData()` smooth out advance/rewind logic, only rewind if magic is invalid --- .../Renderer/Server/Splitter/SplitterContext.cs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterContext.cs b/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterContext.cs index 82eeae90d4..3efa783c37 100644 --- a/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterContext.cs +++ b/src/Ryujinx.Audio/Renderer/Server/Splitter/SplitterContext.cs @@ -153,9 +153,7 @@ namespace Ryujinx.Audio.Renderer.Server.Splitter { for (int i = 0; i < inputHeader.SplitterCount; i++) { - // NOTE: this Rewind/Advance logic is done here to mimic the behavior of the previous implementation. ref readonly SplitterInParameter parameter = ref input.GetRefOrRefToCopy(out _); - input.Rewind(Unsafe.SizeOf()); Debug.Assert(parameter.IsMagicValid()); @@ -165,15 +163,15 @@ namespace Ryujinx.Audio.Renderer.Server.Splitter { ref SplitterState splitter = ref GetState(parameter.Id); - input.Advance(Unsafe.SizeOf()); splitter.Update(this, in parameter, ref input); } - // NOTE: there are 12 bytes of unused (or unknown?) data after the destination IDs array. + // NOTE: there are 12 bytes of unused/unknown data after the destination IDs array. input.Advance(0xC); } else { + input.Rewind(Unsafe.SizeOf()); break; } } @@ -188,9 +186,7 @@ namespace Ryujinx.Audio.Renderer.Server.Splitter { for (int i = 0; i < inputHeader.SplitterDestinationCount; i++) { - // NOTE: this Rewind/Advance logic is done here to mimic the behavior of the previous implementation. ref readonly SplitterDestinationInParameter parameter = ref input.GetRefOrRefToCopy(out _); - input.Rewind(Unsafe.SizeOf()); Debug.Assert(parameter.IsMagicValid()); @@ -202,11 +198,10 @@ namespace Ryujinx.Audio.Renderer.Server.Splitter destination.Update(parameter); } - - input.Advance(Unsafe.SizeOf()); } else { + input.Rewind(Unsafe.SizeOf()); break; } }