From b29950dbd6657f6f6511bc2df2efc4b0ff40e8b9 Mon Sep 17 00:00:00 2001 From: Thomas Guillemard Date: Sun, 3 Nov 2019 18:26:29 +0100 Subject: hle: Fix some inconsistencies in namespace naming in Services (#808) Also fix IShopServiceAccessSystemInterface being in the wrong namespace. --- Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs (limited to 'Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs') diff --git a/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs b/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs new file mode 100644 index 00000000..f5d93423 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/SurfaceFlinger/Parcel.cs @@ -0,0 +1,58 @@ +using System; +using System.IO; + +namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger +{ + static class Parcel + { + public static byte[] GetParcelData(byte[] parcel) + { + if (parcel == null) + { + throw new ArgumentNullException(nameof(parcel)); + } + + using (MemoryStream ms = new MemoryStream(parcel)) + { + BinaryReader reader = new BinaryReader(ms); + + int dataSize = reader.ReadInt32(); + int dataOffset = reader.ReadInt32(); + int objsSize = reader.ReadInt32(); + int objsOffset = reader.ReadInt32(); + + ms.Seek(dataOffset - 0x10, SeekOrigin.Current); + + return reader.ReadBytes(dataSize); + } + } + + public static byte[] MakeParcel(byte[] data, byte[] objs) + { + if (data == null) + { + throw new ArgumentNullException(nameof(data)); + } + + if (objs == null) + { + throw new ArgumentNullException(nameof(objs)); + } + + using (MemoryStream ms = new MemoryStream()) + { + BinaryWriter writer = new BinaryWriter(ms); + + writer.Write(data.Length); + writer.Write(0x10); + writer.Write(objs.Length); + writer.Write(data.Length + 0x10); + + writer.Write(data); + writer.Write(objs); + + return ms.ToArray(); + } + } + } +} \ No newline at end of file -- cgit v1.2.3