From 229209ff5327b9b48b4b95caf0296da2d0687daa Mon Sep 17 00:00:00 2001 From: Isaac Marovitz Date: Mon, 1 Jan 2024 18:59:26 -0800 Subject: [PATCH] Expose InstallFirmware --- src/LibRyujinx/Android/JniExportedMethods.cs | 9 --------- src/LibRyujinx/LibRyujinx.Device.cs | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/LibRyujinx/Android/JniExportedMethods.cs b/src/LibRyujinx/Android/JniExportedMethods.cs index 58b27598b..618da6a41 100644 --- a/src/LibRyujinx/Android/JniExportedMethods.cs +++ b/src/LibRyujinx/Android/JniExportedMethods.cs @@ -4,7 +4,6 @@ using LibRyujinx.Jni.Primitives; using LibRyujinx.Jni.References; using LibRyujinx.Jni.Values; using LibRyujinx.Shared.Audio.Oboe; -using Microsoft.Win32.SafeHandles; using Rxmxnx.PInvoke; using Ryujinx.Audio.Backends.OpenAL; using Ryujinx.Common; @@ -18,7 +17,6 @@ using Silk.NET.Vulkan; using Silk.NET.Vulkan.Extensions.KHR; using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Numerics; using System.Runtime.InteropServices; @@ -775,13 +773,6 @@ namespace LibRyujinx CloseUser(userId); } - - private static FileStream OpenFile(int descriptor) - { - var safeHandle = new SafeFileHandle(descriptor, false); - - return new FileStream(safeHandle, FileAccess.ReadWrite); - } } internal static partial class Logcat diff --git a/src/LibRyujinx/LibRyujinx.Device.cs b/src/LibRyujinx/LibRyujinx.Device.cs index 753b26f81..7ad889c53 100644 --- a/src/LibRyujinx/LibRyujinx.Device.cs +++ b/src/LibRyujinx/LibRyujinx.Device.cs @@ -1,6 +1,7 @@ using ARMeilleure.Translation; using LibHac.Ncm; using LibHac.Tools.FsSystem.NcaUtils; +using Microsoft.Win32.SafeHandles; using Ryujinx.Common.Logging; using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.HOS.SystemState; @@ -67,6 +68,14 @@ namespace LibRyujinx return LoadApplication(path); } + [UnmanagedCallersOnly(EntryPoint = "device_install_firmware")] + public static void InstallFirmwareNative(int descriptor, bool isXci) + { + var stream = OpenFile(descriptor); + + InstallFirmware(stream, isXci); + } + [UnmanagedCallersOnly(EntryPoint = "device_get_installed_firmware_version")] public static IntPtr GetInstalledFirmwareVersionNative() { @@ -258,6 +267,13 @@ namespace LibRyujinx } } + private static FileStream OpenFile(int descriptor) + { + var safeHandle = new SafeFileHandle(descriptor, false); + + return new FileStream(safeHandle, FileAccess.ReadWrite); + } + public enum FileType { None,