From d56d335c0bcd37672debd30896d47694fb29f905 Mon Sep 17 00:00:00 2001
From: Mary <mary@mary.zone>
Date: Sun, 12 Mar 2023 03:24:11 +0100
Subject: [PATCH] misc: Some dependencies cleanup (#4507)

* Remove dependencies on libraries provided by .NET standard library

* Use System.IO.Hashing instead of Crc32.NET
---
 Directory.Packages.props                          |  5 +----
 .../Ryujinx.Graphics.Vulkan.csproj                |  3 ---
 Ryujinx.Input/Motion/CemuHook/Client.cs           | 15 +++++++--------
 Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs  |  9 +++++----
 Ryujinx.Input/Ryujinx.Input.csproj                |  2 +-
 5 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/Directory.Packages.props b/Directory.Packages.props
index 5de9461a1..953591003 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -12,7 +12,6 @@
     <PackageVersion Include="Avalonia.Svg.Skia" Version="0.10.18" />
     <PackageVersion Include="CommandLineParser" Version="2.9.1" />
     <PackageVersion Include="Concentus" Version="1.1.7" />
-    <PackageVersion Include="Crc32.NET" Version="1.2.0" />
     <PackageVersion Include="DiscordRichPresence" Version="1.1.3.18" />
     <PackageVersion Include="DynamicData" Version="7.12.11" />
     <PackageVersion Include="FluentAvaloniaUI" Version="1.4.5" />
@@ -45,10 +44,8 @@
     <PackageVersion Include="SPB" Version="0.0.4-build28" />
     <PackageVersion Include="System.Drawing.Common" Version="7.0.0" />
     <PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="6.27.0" />
-    <PackageVersion Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
+    <PackageVersion Include="System.IO.Hashing" Version="7.0.0" />
     <PackageVersion Include="System.Management" Version="7.0.0" />
-    <PackageVersion Include="System.Net.NameResolution" Version="4.3.0" />
-    <PackageVersion Include="System.Threading.ThreadPool" Version="4.3.0" />
     <PackageVersion Include="UnicornEngine.Unicorn" Version="2.0.2-rc1-f7c841d" />
     <PackageVersion Include="XamlNameReferenceGenerator" Version="1.5.1" />
   </ItemGroup>
diff --git a/Ryujinx.Graphics.Vulkan/Ryujinx.Graphics.Vulkan.csproj b/Ryujinx.Graphics.Vulkan/Ryujinx.Graphics.Vulkan.csproj
index 57e2240a7..20216e51e 100644
--- a/Ryujinx.Graphics.Vulkan/Ryujinx.Graphics.Vulkan.csproj
+++ b/Ryujinx.Graphics.Vulkan/Ryujinx.Graphics.Vulkan.csproj
@@ -29,9 +29,6 @@
     <PackageReference Include="Silk.NET.Vulkan" />
     <PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" />
     <PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" />
-    <PackageReference Include="System.IO.FileSystem.Primitives" />
-    <PackageReference Include="System.Net.NameResolution" />
-    <PackageReference Include="System.Threading.ThreadPool" />
   </ItemGroup>
 
   <ItemGroup>
diff --git a/Ryujinx.Input/Motion/CemuHook/Client.cs b/Ryujinx.Input/Motion/CemuHook/Client.cs
index ecaf26f03..f5f7b8643 100644
--- a/Ryujinx.Input/Motion/CemuHook/Client.cs
+++ b/Ryujinx.Input/Motion/CemuHook/Client.cs
@@ -1,5 +1,4 @@
-using Force.Crc32;
-using Ryujinx.Common;
+using Ryujinx.Common;
 using Ryujinx.Common.Configuration.Hid;
 using Ryujinx.Common.Configuration.Hid.Controller;
 using Ryujinx.Common.Configuration.Hid.Controller.Motion;
@@ -9,6 +8,7 @@ using Ryujinx.Input.Motion.CemuHook.Protocol;
 using System;
 using System.Collections.Generic;
 using System.IO;
+using System.IO.Hashing;
 using System.Net;
 using System.Net.Sockets;
 using System.Numerics;
@@ -401,10 +401,10 @@ namespace Ryujinx.Input.Motion.CemuHook
                 writer.Seek(6, SeekOrigin.Begin);
                 writer.Write(header.Length);
 
-                header.Crc32 = Crc32Algorithm.Compute(stream.ToArray());
+                Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan());
 
                 writer.Seek(8, SeekOrigin.Begin);
-                writer.Write(header.Crc32);
+                writer.Write(header.Crc32.AsSpan());
 
                 byte[] data = stream.ToArray();
 
@@ -440,10 +440,10 @@ namespace Ryujinx.Input.Motion.CemuHook
                 writer.Seek(6, SeekOrigin.Begin);
                 writer.Write(header.Length);
 
-                header.Crc32 = Crc32Algorithm.Compute(stream.ToArray());
+                Crc32.Hash(stream.ToArray(), header.Crc32.AsSpan());
 
                 writer.Seek(8, SeekOrigin.Begin);
-                writer.Write(header.Crc32);
+                writer.Write(header.Crc32.AsSpan());
 
                 byte[] data = stream.ToArray();
 
@@ -458,8 +458,7 @@ namespace Ryujinx.Input.Motion.CemuHook
                 Id          = (uint)clientId,
                 MagicString = Magic,
                 Version     = Version,
-                Length      = 0,
-                Crc32       = 0
+                Length      = 0
             };
 
             return header;
diff --git a/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs b/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
index 94cf4bb67..57f58ff03 100644
--- a/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
+++ b/Ryujinx.Input/Motion/CemuHook/Protocol/Header.cs
@@ -1,14 +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)]
     public struct Header
     {
-        public uint   MagicString;
+        public uint MagicString;
         public ushort Version;
         public ushort Length;
-        public uint   Crc32;
-        public uint   Id;
+        public Array4<byte> Crc32;
+        public uint Id;
     }
 }
\ No newline at end of file
diff --git a/Ryujinx.Input/Ryujinx.Input.csproj b/Ryujinx.Input/Ryujinx.Input.csproj
index 40b82246c..df462734f 100644
--- a/Ryujinx.Input/Ryujinx.Input.csproj
+++ b/Ryujinx.Input/Ryujinx.Input.csproj
@@ -6,7 +6,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Crc32.NET" />
+    <PackageReference Include="System.IO.Hashing" />
   </ItemGroup>
 
   <ItemGroup>