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

@ -40,7 +40,7 @@ namespace Ryujinx.Headless.SDL2.OpenGL
private class OpenToolkitBindingsContext : IBindingsContext
{
public IntPtr GetProcAddress(string procName)
public nint GetProcAddress(string procName)
{
return SDL_GL_GetProcAddress(procName);
}
@ -48,11 +48,11 @@ namespace Ryujinx.Headless.SDL2.OpenGL
private class SDL2OpenGLContext : IOpenGLContext
{
private readonly IntPtr _context;
private readonly IntPtr _window;
private readonly nint _context;
private readonly nint _window;
private readonly bool _shouldDisposeWindow;
public SDL2OpenGLContext(IntPtr context, IntPtr window, bool shouldDisposeWindow = true)
public SDL2OpenGLContext(nint context, nint window, bool shouldDisposeWindow = true)
{
_context = context;
_window = window;
@ -65,14 +65,14 @@ namespace Ryujinx.Headless.SDL2.OpenGL
// Ensure we share our contexts.
SetupOpenGLAttributes(true, GraphicsDebugLevel.None);
IntPtr windowHandle = SDL_CreateWindow("Ryujinx background context window", 0, 0, 1, 1, SDL_WindowFlags.SDL_WINDOW_OPENGL | SDL_WindowFlags.SDL_WINDOW_HIDDEN);
IntPtr context = SDL_GL_CreateContext(windowHandle);
nint windowHandle = SDL_CreateWindow("Ryujinx background context window", 0, 0, 1, 1, SDL_WindowFlags.SDL_WINDOW_OPENGL | SDL_WindowFlags.SDL_WINDOW_HIDDEN);
nint context = SDL_GL_CreateContext(windowHandle);
GL.LoadBindings(new OpenToolkitBindingsContext());
CheckResult(SDL_GL_SetAttribute(SDL_GLattr.SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 0));
CheckResult(SDL_GL_MakeCurrent(windowHandle, IntPtr.Zero));
CheckResult(SDL_GL_MakeCurrent(windowHandle, nint.Zero));
return new SDL2OpenGLContext(context, windowHandle);
}
@ -96,7 +96,7 @@ namespace Ryujinx.Headless.SDL2.OpenGL
}
}
public bool HasContext() => SDL_GL_GetCurrentContext() != IntPtr.Zero;
public bool HasContext() => SDL_GL_GetCurrentContext() != nint.Zero;
public void Dispose()
{
@ -129,10 +129,10 @@ namespace Ryujinx.Headless.SDL2.OpenGL
{
// Ensure to not share this context with other contexts before this point.
SetupOpenGLAttributes(false, _glLogLevel);
IntPtr context = SDL_GL_CreateContext(WindowHandle);
nint context = SDL_GL_CreateContext(WindowHandle);
CheckResult(SDL_GL_SetSwapInterval(1));
if (context == IntPtr.Zero)
if (context == nint.Zero)
{
string errorMessage = $"SDL_GL_CreateContext failed with error \"{SDL_GetError()}\"";
@ -190,7 +190,7 @@ namespace Ryujinx.Headless.SDL2.OpenGL
Device.DisposeGpu();
// Unbind context and destroy everything
CheckResult(SDL_GL_MakeCurrent(WindowHandle, IntPtr.Zero));
CheckResult(SDL_GL_MakeCurrent(WindowHandle, nint.Zero));
_openGLContext.Dispose();
}

View file

@ -46,7 +46,7 @@ namespace Ryujinx.Headless.SDL2.Vulkan
action();
}
public IntPtr CreateWindowSurface(IntPtr instance)
public nint CreateWindowSurface(nint instance)
{
ulong surfaceHandle = 0;
@ -71,19 +71,19 @@ namespace Ryujinx.Headless.SDL2.Vulkan
CreateSurface();
}
return (IntPtr)surfaceHandle;
return (nint)surfaceHandle;
}
public unsafe string[] GetRequiredInstanceExtensions()
{
if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out uint extensionsCount, IntPtr.Zero) == SDL_bool.SDL_TRUE)
if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out uint extensionsCount, nint.Zero) == SDL_bool.SDL_TRUE)
{
IntPtr[] rawExtensions = new IntPtr[(int)extensionsCount];
nint[] rawExtensions = new nint[(int)extensionsCount];
string[] extensions = new string[(int)extensionsCount];
fixed (IntPtr* rawExtensionsPtr = rawExtensions)
fixed (nint* rawExtensionsPtr = rawExtensions)
{
if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out extensionsCount, (IntPtr)rawExtensionsPtr) == SDL_bool.SDL_TRUE)
if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out extensionsCount, (nint)rawExtensionsPtr) == SDL_bool.SDL_TRUE)
{
for (int i = 0; i < extensions.Length; i++)
{

View file

@ -38,7 +38,7 @@ namespace Ryujinx.Headless.SDL2
[LibraryImport("SDL2")]
// TODO: Remove this as soon as SDL2-CS was updated to expose this method publicly
private static partial IntPtr SDL_LoadBMP_RW(IntPtr src, int freesrc);
private static partial nint SDL_LoadBMP_RW(nint src, int freesrc);
public static void QueueMainThreadAction(Action action)
{
@ -52,7 +52,7 @@ namespace Ryujinx.Headless.SDL2
public event EventHandler<StatusUpdatedEventArgs> StatusUpdatedEvent;
protected IntPtr WindowHandle { get; set; }
protected nint WindowHandle { get; set; }
public IHostUITheme HostUITheme { get; }
public int Width { get; private set; }
@ -148,8 +148,8 @@ namespace Ryujinx.Headless.SDL2
{
fixed (byte* iconPtr = iconBytes)
{
IntPtr rwOpsStruct = SDL_RWFromConstMem((IntPtr)iconPtr, iconBytes.Length);
IntPtr iconHandle = SDL_LoadBMP_RW(rwOpsStruct, 1);
nint rwOpsStruct = SDL_RWFromConstMem((nint)iconPtr, iconBytes.Length);
nint iconHandle = SDL_LoadBMP_RW(rwOpsStruct, 1);
SDL_SetWindowIcon(WindowHandle, iconHandle);
SDL_FreeSurface(iconHandle);
@ -187,7 +187,7 @@ namespace Ryujinx.Headless.SDL2
WindowHandle = SDL_CreateWindow($"Ryujinx {Program.Version}{titleNameSection}{titleVersionSection}{titleIdSection}{titleArchSection}", SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), SDL_WINDOWPOS_CENTERED_DISPLAY(DisplayId), Width, Height, DefaultFlags | FullscreenFlag | GetWindowFlags());
if (WindowHandle == IntPtr.Zero)
if (WindowHandle == nint.Zero)
{
string errorMessage = $"SDL_CreateWindow failed with error \"{SDL_GetError()}\"";