diff options
Diffstat (limited to 'Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs')
| -rw-r--r-- | Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs b/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs index 6bba49ae..a0578d48 100644 --- a/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs +++ b/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs @@ -41,10 +41,8 @@ namespace Ryujinx.Horizon.Sdk.Sf { _args = args; - for (int i = 0; i < args.Length; i++) + foreach (CommandArg argInfo in args) { - var argInfo = args[i]; - switch (argInfo.Type) { case CommandArgType.Buffer: @@ -239,14 +237,13 @@ namespace Ryujinx.Horizon.Sdk.Sf { return mode == HipcBufferMode.NonSecure; } - else if (flags.HasFlag(HipcBufferFlags.MapTransferAllowsNonDevice)) + + if (flags.HasFlag(HipcBufferFlags.MapTransferAllowsNonDevice)) { return mode == HipcBufferMode.NonDevice; } - else - { - return mode == HipcBufferMode.Normal; - } + + return mode == HipcBufferMode.Normal; } public void SetOutBuffers(HipcMessageData response, bool[] isBufferMapAlias) @@ -261,28 +258,30 @@ namespace Ryujinx.Horizon.Sdk.Sf } var flags = _args[i].BufferFlags; - if (flags.HasFlag(HipcBufferFlags.Out)) + if (!flags.HasFlag(HipcBufferFlags.Out)) { - var buffer = _bufferRanges[i]; + continue; + } + + var buffer = _bufferRanges[i]; - if (flags.HasFlag(HipcBufferFlags.Pointer)) + if (flags.HasFlag(HipcBufferFlags.Pointer)) + { + response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(buffer.Address, (ushort)buffer.Size, recvPointerIndex); + } + else if (flags.HasFlag(HipcBufferFlags.AutoSelect)) + { + if (!isBufferMapAlias[i]) { response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(buffer.Address, (ushort)buffer.Size, recvPointerIndex); } - else if (flags.HasFlag(HipcBufferFlags.AutoSelect)) + else { - if (!isBufferMapAlias[i]) - { - response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(buffer.Address, (ushort)buffer.Size, recvPointerIndex); - } - else - { - response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(0UL, 0, recvPointerIndex); - } + response.SendStatics[recvPointerIndex] = new HipcStaticDescriptor(0UL, 0, recvPointerIndex); } - - recvPointerIndex++; } + + recvPointerIndex++; } } @@ -339,15 +338,17 @@ namespace Ryujinx.Horizon.Sdk.Sf int inObjectIndex = 0; - for (int i = 0; i < _args.Length; i++) + foreach (CommandArg t in _args) { - if (_args[i].Type == CommandArgType.InObject) + if (t.Type != CommandArgType.InObject) { - int index = inObjectIndex++; - var inObject = inObjects[index]; - - objects[index] = inObject?.ServiceObject; + continue; } + + int index = inObjectIndex++; + var inObject = inObjects[index]; + + objects[index] = inObject?.ServiceObject; } return Result.Success; |
