misc: Replace references to IntPtr/UIntPtr with nint/nuint + code cleanups.

This commit is contained in:
Evan Husted 2024-10-26 08:46:41 -05:00
parent a09d314817
commit dfb4854d19
172 changed files with 902 additions and 914 deletions

View file

@ -21,33 +21,33 @@ namespace Ryujinx.Common.GraphicsDriver
private const uint NvAPI_DRS_DestroySession_ID = 0x0DAD9CFF8;
[LibraryImport("nvapi64")]
private static partial IntPtr nvapi_QueryInterface(uint id);
private static partial nint nvapi_QueryInterface(uint id);
private delegate int NvAPI_InitializeDelegate();
private static NvAPI_InitializeDelegate NvAPI_Initialize;
private delegate int NvAPI_DRS_CreateSessionDelegate(out IntPtr handle);
private delegate int NvAPI_DRS_CreateSessionDelegate(out nint handle);
private static NvAPI_DRS_CreateSessionDelegate NvAPI_DRS_CreateSession;
private delegate int NvAPI_DRS_LoadSettingsDelegate(IntPtr handle);
private delegate int NvAPI_DRS_LoadSettingsDelegate(nint handle);
private static NvAPI_DRS_LoadSettingsDelegate NvAPI_DRS_LoadSettings;
private delegate int NvAPI_DRS_FindProfileByNameDelegate(IntPtr handle, NvapiUnicodeString profileName, out IntPtr profileHandle);
private delegate int NvAPI_DRS_FindProfileByNameDelegate(nint handle, NvapiUnicodeString profileName, out nint profileHandle);
private static NvAPI_DRS_FindProfileByNameDelegate NvAPI_DRS_FindProfileByName;
private delegate int NvAPI_DRS_CreateProfileDelegate(IntPtr handle, ref NvdrsProfile profileInfo, out IntPtr profileHandle);
private delegate int NvAPI_DRS_CreateProfileDelegate(nint handle, ref NvdrsProfile profileInfo, out nint profileHandle);
private static NvAPI_DRS_CreateProfileDelegate NvAPI_DRS_CreateProfile;
private delegate int NvAPI_DRS_CreateApplicationDelegate(IntPtr handle, IntPtr profileHandle, ref NvdrsApplicationV4 app);
private delegate int NvAPI_DRS_CreateApplicationDelegate(nint handle, nint profileHandle, ref NvdrsApplicationV4 app);
private static NvAPI_DRS_CreateApplicationDelegate NvAPI_DRS_CreateApplication;
private delegate int NvAPI_DRS_SetSettingDelegate(IntPtr handle, IntPtr profileHandle, ref NvdrsSetting setting);
private delegate int NvAPI_DRS_SetSettingDelegate(nint handle, nint profileHandle, ref NvdrsSetting setting);
private static NvAPI_DRS_SetSettingDelegate NvAPI_DRS_SetSetting;
private delegate int NvAPI_DRS_SaveSettingsDelegate(IntPtr handle);
private delegate int NvAPI_DRS_SaveSettingsDelegate(nint handle);
private static NvAPI_DRS_SaveSettingsDelegate NvAPI_DRS_SaveSettings;
private delegate int NvAPI_DRS_DestroySessionDelegate(IntPtr handle);
private delegate int NvAPI_DRS_DestroySessionDelegate(nint handle);
private static NvAPI_DRS_DestroySessionDelegate NvAPI_DRS_DestroySession;
private static bool _initialized;
@ -94,7 +94,7 @@ namespace Ryujinx.Common.GraphicsDriver
Check(NvAPI_Initialize());
Check(NvAPI_DRS_CreateSession(out IntPtr handle));
Check(NvAPI_DRS_CreateSession(out nint handle));
Check(NvAPI_DRS_LoadSettings(handle));
@ -148,9 +148,9 @@ namespace Ryujinx.Common.GraphicsDriver
private static T NvAPI_Delegate<T>(uint id) where T : class
{
IntPtr ptr = nvapi_QueryInterface(id);
nint ptr = nvapi_QueryInterface(id);
if (ptr != IntPtr.Zero)
if (ptr != nint.Zero)
{
return Marshal.GetDelegateForFunctionPointer<T>(ptr);
}

View file

@ -11,17 +11,17 @@ namespace Ryujinx.Common.Memory
/// <typeparam name="T">Array element type</typeparam>
public unsafe struct ArrayPtr<T> : IEquatable<ArrayPtr<T>>, IArray<T> where T : unmanaged
{
private IntPtr _ptr;
private nint _ptr;
/// <summary>
/// Null pointer.
/// </summary>
public static ArrayPtr<T> Null => new() { _ptr = IntPtr.Zero };
public static ArrayPtr<T> Null => new() { _ptr = nint.Zero };
/// <summary>
/// True if the pointer is null, false otherwise.
/// </summary>
public readonly bool IsNull => _ptr == IntPtr.Zero;
public readonly bool IsNull => _ptr == nint.Zero;
/// <summary>
/// Number of elements on the array.
@ -50,7 +50,7 @@ namespace Ryujinx.Common.Memory
/// <param name="length">Number of elements on the array</param>
public ArrayPtr(ref T value, int length)
{
_ptr = (IntPtr)Unsafe.AsPointer(ref value);
_ptr = (nint)Unsafe.AsPointer(ref value);
Length = length;
}
@ -61,7 +61,7 @@ namespace Ryujinx.Common.Memory
/// <param name="length">Number of elements on the array</param>
public ArrayPtr(T* ptr, int length)
{
_ptr = (IntPtr)ptr;
_ptr = (nint)ptr;
Length = length;
}
@ -70,7 +70,7 @@ namespace Ryujinx.Common.Memory
/// </summary>
/// <param name="ptr">Array base pointer</param>
/// <param name="length">Number of elements on the array</param>
public ArrayPtr(IntPtr ptr, int length)
public ArrayPtr(nint ptr, int length)
{
_ptr = ptr;
Length = length;

View file

@ -21,7 +21,7 @@ namespace Ryujinx.Common.Memory.PartialUnmaps
public readonly static int PartialUnmapsCountOffset;
public readonly static int LocalCountsOffset;
public readonly static IntPtr GlobalState;
public readonly static nint GlobalState;
[SupportedOSPlatform("windows")]
[LibraryImport("kernel32.dll")]
@ -29,17 +29,17 @@ namespace Ryujinx.Common.Memory.PartialUnmaps
[SupportedOSPlatform("windows")]
[LibraryImport("kernel32.dll", SetLastError = true)]
private static partial IntPtr OpenThread(int dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwThreadId);
private static partial nint OpenThread(int dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwThreadId);
[SupportedOSPlatform("windows")]
[LibraryImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static partial bool CloseHandle(IntPtr hObject);
private static partial bool CloseHandle(nint hObject);
[SupportedOSPlatform("windows")]
[LibraryImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static partial bool GetExitCodeThread(IntPtr hThread, out uint lpExitCode);
private static partial bool GetExitCodeThread(nint hThread, out uint lpExitCode);
/// <summary>
/// Creates a global static PartialUnmapState and populates the field offsets.
@ -137,9 +137,9 @@ namespace Ryujinx.Common.Memory.PartialUnmaps
if (id != 0)
{
IntPtr handle = OpenThread(ThreadQueryInformation, false, (uint)id);
nint handle = OpenThread(ThreadQueryInformation, false, (uint)id);
if (handle == IntPtr.Zero)
if (handle == nint.Zero)
{
Interlocked.CompareExchange(ref ids[i], 0, id);
}

View file

@ -10,17 +10,17 @@ namespace Ryujinx.Common.Memory
/// <typeparam name="T">Type of the unmanaged resource</typeparam>
public unsafe struct Ptr<T> : IEquatable<Ptr<T>> where T : unmanaged
{
private IntPtr _ptr;
private nint _ptr;
/// <summary>
/// Null pointer.
/// </summary>
public static Ptr<T> Null => new() { _ptr = IntPtr.Zero };
public static Ptr<T> Null => new() { _ptr = nint.Zero };
/// <summary>
/// True if the pointer is null, false otherwise.
/// </summary>
public readonly bool IsNull => _ptr == IntPtr.Zero;
public readonly bool IsNull => _ptr == nint.Zero;
/// <summary>
/// Gets a reference to the value.
@ -37,7 +37,7 @@ namespace Ryujinx.Common.Memory
/// <param name="value">Reference to the unmanaged resource</param>
public Ptr(ref T value)
{
_ptr = (IntPtr)Unsafe.AsPointer(ref value);
_ptr = (nint)Unsafe.AsPointer(ref value);
}
public readonly override bool Equals(object obj)

View file

@ -14,19 +14,19 @@ namespace Ryujinx.Common.SystemInterop
private const string X11LibraryName = "libX11.so.6";
[LibraryImport(X11LibraryName)]
private static partial IntPtr XOpenDisplay([MarshalAs(UnmanagedType.LPStr)] string display);
private static partial nint XOpenDisplay([MarshalAs(UnmanagedType.LPStr)] string display);
[LibraryImport(X11LibraryName)]
private static partial IntPtr XGetDefault(IntPtr display, [MarshalAs(UnmanagedType.LPStr)] string program, [MarshalAs(UnmanagedType.LPStr)] string option);
private static partial nint XGetDefault(nint display, [MarshalAs(UnmanagedType.LPStr)] string program, [MarshalAs(UnmanagedType.LPStr)] string option);
[LibraryImport(X11LibraryName)]
private static partial int XDisplayWidth(IntPtr display, int screenNumber);
private static partial int XDisplayWidth(nint display, int screenNumber);
[LibraryImport(X11LibraryName)]
private static partial int XDisplayWidthMM(IntPtr display, int screenNumber);
private static partial int XDisplayWidthMM(nint display, int screenNumber);
[LibraryImport(X11LibraryName)]
private static partial int XCloseDisplay(IntPtr display);
private static partial int XCloseDisplay(nint display);
private const double StandardDpiScale = 96.0;
private const double MaxScaleFactor = 1.25;
@ -51,7 +51,7 @@ namespace Ryujinx.Common.SystemInterop
{
if (OperatingSystem.IsWindows())
{
userDpiScale = GdiPlusHelper.GetDpiX(IntPtr.Zero);
userDpiScale = GdiPlusHelper.GetDpiX(nint.Zero);
}
else if (OperatingSystem.IsLinux())
{
@ -59,7 +59,7 @@ namespace Ryujinx.Common.SystemInterop
if (xdgSessionType == null || xdgSessionType == "x11")
{
IntPtr display = XOpenDisplay(null);
nint display = XOpenDisplay(null);
string dpiString = Marshal.PtrToStringAnsi(XGetDefault(display, "Xft", "dpi"));
if (dpiString == null || !double.TryParse(dpiString, NumberStyles.Any, CultureInfo.InvariantCulture, out userDpiScale))
{

View file

@ -9,7 +9,7 @@ namespace Ryujinx.Common.SystemInterop
{
private const string LibraryName = "gdiplus.dll";
private static readonly IntPtr _initToken;
private static readonly nint _initToken;
static GdiPlusHelper()
{
@ -29,7 +29,7 @@ namespace Ryujinx.Common.SystemInterop
public int GdiplusVersion;
#pragma warning disable CS0649 // Field is never assigned to
public IntPtr DebugEventCallback;
public nint DebugEventCallback;
public int SuppressBackgroundThread;
public int SuppressExternalCodecs;
public int StartupParameters;
@ -39,7 +39,7 @@ namespace Ryujinx.Common.SystemInterop
{
// We assume Windows 8 and upper
GdiplusVersion = 2,
DebugEventCallback = IntPtr.Zero,
DebugEventCallback = nint.Zero,
SuppressBackgroundThread = 0,
SuppressExternalCodecs = 0,
StartupParameters = 0,
@ -48,25 +48,25 @@ namespace Ryujinx.Common.SystemInterop
private struct StartupOutput
{
public IntPtr NotificationHook;
public IntPtr NotificationUnhook;
public nint NotificationHook;
public nint NotificationUnhook;
}
[LibraryImport(LibraryName)]
private static partial int GdiplusStartup(out IntPtr token, in StartupInputEx input, out StartupOutput output);
private static partial int GdiplusStartup(out nint token, in StartupInputEx input, out StartupOutput output);
[LibraryImport(LibraryName)]
private static partial int GdipCreateFromHWND(IntPtr hwnd, out IntPtr graphics);
private static partial int GdipCreateFromHWND(nint hwnd, out nint graphics);
[LibraryImport(LibraryName)]
private static partial int GdipDeleteGraphics(IntPtr graphics);
private static partial int GdipDeleteGraphics(nint graphics);
[LibraryImport(LibraryName)]
private static partial int GdipGetDpiX(IntPtr graphics, out float dpi);
private static partial int GdipGetDpiX(nint graphics, out float dpi);
public static float GetDpiX(IntPtr hwnd)
public static float GetDpiX(nint hwnd)
{
CheckStatus(GdipCreateFromHWND(hwnd, out IntPtr graphicsHandle));
CheckStatus(GdipCreateFromHWND(hwnd, out nint graphicsHandle));
CheckStatus(GdipGetDpiX(graphicsHandle, out float result));
CheckStatus(GdipDeleteGraphics(graphicsHandle));