From 548bfd60a2468aa6258675efae5ed21102985cc6 Mon Sep 17 00:00:00 2001 From: Mary-nyan Date: Thu, 24 Nov 2022 20:13:16 +0100 Subject: [PATCH] chore: Update Ryujinx.SDL2-CS to 2.24.2 (#3892) * chore: Update Ryujinx.SDL2-CS to 2.24.2 * Disable SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS --- Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs | 8 ++------ Ryujinx.SDL2.Common/Ryujinx.SDL2.Common.csproj | 2 +- Ryujinx.SDL2.Common/SDL2Driver.cs | 7 +++++++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs b/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs index 0fcf517be..6eacadc15 100644 --- a/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs +++ b/Ryujinx.Headless.SDL2/Vulkan/VulkanWindow.cs @@ -40,20 +40,16 @@ namespace Ryujinx.Headless.SDL2.Vulkan return (IntPtr)surfaceHandle; } - // TODO: Fix this in SDL2-CS. - [DllImport("SDL2", EntryPoint = "SDL_Vulkan_GetInstanceExtensions", CallingConvention = CallingConvention.Cdecl)] - public static extern SDL_bool SDL_Vulkan_GetInstanceExtensions_Workaround(IntPtr window, out uint count, IntPtr names); - public unsafe string[] GetRequiredInstanceExtensions() { - if (SDL_Vulkan_GetInstanceExtensions_Workaround(WindowHandle, out uint extensionsCount, IntPtr.Zero) == SDL_bool.SDL_TRUE) + if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out uint extensionsCount, IntPtr.Zero) == SDL_bool.SDL_TRUE) { IntPtr[] rawExtensions = new IntPtr[(int)extensionsCount]; string[] extensions = new string[(int)extensionsCount]; fixed (IntPtr* rawExtensionsPtr = rawExtensions) { - if (SDL_Vulkan_GetInstanceExtensions_Workaround(WindowHandle, out extensionsCount, (IntPtr)rawExtensionsPtr) == SDL_bool.SDL_TRUE) + if (SDL_Vulkan_GetInstanceExtensions(WindowHandle, out extensionsCount, (IntPtr)rawExtensionsPtr) == SDL_bool.SDL_TRUE) { for (int i = 0; i < extensions.Length; i++) { diff --git a/Ryujinx.SDL2.Common/Ryujinx.SDL2.Common.csproj b/Ryujinx.SDL2.Common/Ryujinx.SDL2.Common.csproj index 51b3b374e..96bebac0a 100644 --- a/Ryujinx.SDL2.Common/Ryujinx.SDL2.Common.csproj +++ b/Ryujinx.SDL2.Common/Ryujinx.SDL2.Common.csproj @@ -5,7 +5,7 @@ - + diff --git a/Ryujinx.SDL2.Common/SDL2Driver.cs b/Ryujinx.SDL2.Common/SDL2Driver.cs index fbf2b64ab..4a30523c3 100644 --- a/Ryujinx.SDL2.Common/SDL2Driver.cs +++ b/Ryujinx.SDL2.Common/SDL2Driver.cs @@ -43,6 +43,8 @@ namespace Ryujinx.SDL2.Common private SDL2Driver() {} + private const string SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS = "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS"; + public void Initialize() { lock (_lock) @@ -60,6 +62,11 @@ namespace Ryujinx.SDL2.Common SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED, "0"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS, "1"); + + // NOTE: As of SDL2 2.24.0, joycons are combined by default but the motion source only come from one of them. + // We disable this behavior for now. + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS, "0"); + if (SDL_Init(SdlInitFlags) != 0) { string errorMessage = $"SDL2 initlaization failed with error \"{SDL_GetError()}\"";