From f4e879a1e6ad810aa38c1c020467a2589441871b Mon Sep 17 00:00:00 2001 From: Mary-nyan Date: Thu, 24 Nov 2022 15:26:29 +0100 Subject: 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 --- Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'Ryujinx.HLE/HOS/Services/Time/Clock') diff --git a/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs b/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs index df1f151f..07c1b405 100644 --- a/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs +++ b/Ryujinx.HLE/HOS/Services/Time/Clock/Types/ClockSnapshot.cs @@ -1,4 +1,5 @@ using Ryujinx.HLE.HOS.Services.Time.TimeZone; +using System; using System.Runtime.InteropServices; namespace Ryujinx.HLE.HOS.Services.Time.Clock @@ -16,14 +17,22 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock public CalendarAdditionalInfo NetworkCalendarAdditionalTime; public SteadyClockTimePoint SteadyClockTimePoint; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x24)] - public char[] LocationName; + private LocationNameStorageHolder _locationName; + + public Span LocationName => MemoryMarshal.Cast(MemoryMarshal.CreateSpan(ref _locationName, LocationNameStorageHolder.Size)); [MarshalAs(UnmanagedType.I1)] public bool IsAutomaticCorrectionEnabled; public byte Type; public ushort Unknown; + + [StructLayout(LayoutKind.Sequential, Pack = 1, Size = Size)] + private struct LocationNameStorageHolder + { + public const int Size = 0x24; + } + public static ResultCode GetCurrentTime(out long currentTime, SteadyClockTimePoint steadyClockTimePoint, SystemClockContext context) { currentTime = 0; -- cgit v1.2.3