diff options
| author | Mary-nyan <mary@mary.zone> | 2022-11-24 15:26:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-24 15:26:29 +0100 |
| commit | f4e879a1e6ad810aa38c1c020467a2589441871b (patch) | |
| tree | 274c6ee1f55129f01bbd28a6dcd92ce3f84237fb /Ryujinx.Input/Motion | |
| parent | a1ddaa2736b188de928564af56aa787a25831ff7 (diff) | |
Reduce usage of Marshal.PtrToStructure and Marshal.StructureToPtr (#3805)
* common: Make BinaryReaderExtensions Read & Write take unamanged types
This allows us to not rely on Marshal.PtrToStructure and Marshal.StructureToPtr for those.
* common: Make MemoryHelper Read & Write takes unamanged types
* Update Marshal.SizeOf => Unsafe.SizeOf when appropriate and start moving software applet to unmanaged types
Diffstat (limited to 'Ryujinx.Input/Motion')
3 files changed, 16 insertions, 21 deletions
diff --git a/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs b/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs index 9ff8dc91..7fb72344 100644 --- a/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs +++ b/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerData.cs @@ -1,16 +1,15 @@ -using System.Runtime.InteropServices; +using Ryujinx.Common.Memory; +using System.Runtime.InteropServices; namespace Ryujinx.Input.Motion.CemuHook.Protocol { [StructLayout(LayoutKind.Sequential, Pack = 1)] struct ControllerDataRequest { - public MessageType Type; + public MessageType Type; public SubscriberType SubscriberType; - public byte Slot; - - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[] MacAddress; + public byte Slot; + public Array6<byte> MacAddress; } [StructLayout(LayoutKind.Sequential, Pack = 1)] @@ -27,11 +26,8 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public uint DPadAnalog; public ulong MainButtonsAnalog; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[] Touch1; - - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[] Touch2; + public Array6<byte> Touch1; + public Array6<byte> Touch2; public ulong MotionTimestamp; public float AccelerometerX; diff --git a/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs b/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs index d483633e..63d4524a 100644 --- a/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs +++ b/Ryujinx.Input/Motion/CemuHook/Protocol/ControllerInfo.cs @@ -1,21 +1,20 @@ -using System.Runtime.InteropServices; +using Ryujinx.Common.Memory; +using System.Runtime.InteropServices; namespace Ryujinx.Input.Motion.CemuHook.Protocol { [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct ControllerInfoResponse { - public SharedResponse Shared; - private byte _zero; + public SharedResponse Shared; + private byte _zero; } [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct ControllerInfoRequest { public MessageType Type; - public int PortsCount; - - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] - public byte[] PortIndices; + public int PortsCount; + public Array4<byte> PortIndices; } }
\ No newline at end of file diff --git a/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs b/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs index 0593286d..e2e1ee9b 100644 --- a/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs +++ b/Ryujinx.Input/Motion/CemuHook/Protocol/SharedResponse.cs @@ -1,4 +1,5 @@ -using System.Runtime.InteropServices; +using Ryujinx.Common.Memory; +using System.Runtime.InteropServices; namespace Ryujinx.Input.Motion.CemuHook.Protocol { @@ -11,8 +12,7 @@ namespace Ryujinx.Input.Motion.CemuHook.Protocol public DeviceModelType ModelType; public ConnectionType ConnectionType; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] - public byte[] MacAddress; + public Array6<byte> MacAddress; public BatteryStatus BatteryStatus; } |
