From cec41b2448d6bed9649b26fd98b2441ccd511ab7 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sun, 17 Aug 2025 12:49:19 -0500 Subject: [PATCH 1/2] ControllerInterface/SDL: Don't force SDL_HINT_JOYSTICK_THREAD. SDL3 enables it by default now and things seem to work properly even when it's off these days. --- Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp index 8e4043f4a9..f684d94570 100644 --- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp @@ -130,9 +130,6 @@ InputBackend::InputBackend(ControllerInterface* controller_interface) { EnableSDLLogging(); - // This is required on windows so that SDL's joystick code properly pumps window messages - SDL_SetHint(SDL_HINT_JOYSTICK_THREAD, "1"); - SDL_SetHint(SDL_HINT_JOYSTICK_ENHANCED_REPORTS, "1"); // We have our own WGI backend. Enabling SDL's WGI handling creates even more redundant devices. From cee9360e4b5d6e31407c3cfe30438b1f8b6e7a10 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Sun, 17 Aug 2025 12:53:09 -0500 Subject: [PATCH 2/2] ControllerInterface/SDL: Remove manual window message pumping on Windows. The mentioned SDL hotplug issue seems to have been fixed. --- .../ControllerInterface/SDL/SDL.cpp | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp index f684d94570..da6e829bd1 100644 --- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp @@ -174,34 +174,11 @@ InputBackend::InputBackend(ControllerInterface* controller_interface) } } -#ifdef _WIN32 - // This is a hack to workaround SDL_hidapi using window messages to detect device - // removal/arrival, yet no part of SDL pumps messages for it. It can hopefully be removed in the - // future when SDL fixes the issue. Note this is a separate issue from SDL_HINT_JOYSTICK_THREAD. - // Also note that SDL_WaitEvent may block while device detection window messages get queued up, - // causing some noticible stutter. This is just another reason it should be fixed properly by - // SDL... - const auto window_handle = - FindWindowEx(HWND_MESSAGE, nullptr, TEXT("SDL_HIDAPI_DEVICE_DETECTION"), nullptr); -#endif - SDL_Event e; while (SDL_WaitEvent(&e)) { if (!HandleEventAndContinue(e)) return; - -#ifdef _WIN32 - MSG msg; - while (window_handle && PeekMessage(&msg, window_handle, 0, 0, PM_NOREMOVE)) - { - if (GetMessageA(&msg, window_handle, 0, 0) != 0) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } -#endif } });