aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs')
-rw-r--r--Ryujinx.Horizon/Sdk/Sf/HipcCommandProcessor.cs57
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;