Merge pull request #13982 from jordan-woyak/sdl-disable-dinput

SDL: Disable DirectInput handling to work around hangs on shutdown.
This commit is contained in:
Jordan Woyak 2025-10-02 03:21:33 -05:00 committed by GitHub
commit cd84d58a1a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -16,6 +16,7 @@
#include "Common/Event.h"
#include "Common/Logging/Log.h"
#include "Common/ScopeGuard.h"
#include "Common/Thread.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
#include "InputCommon/ControllerInterface/SDL/SDLGamepad.h"
@ -138,7 +139,15 @@ InputBackend::InputBackend(ControllerInterface* controller_interface)
// Disable DualSense Player LEDs; We already colorize the Primary LED
SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED, "0");
// Disabling DirectInput support apparently solves hangs on shutdown for users with
// "8BitDo Ultimate 2" controllers.
// It also works around a possibly related random hang on a IDirectInputDevice8_Acquire
// call within SDL.
SDL_SetHint(SDL_HINT_JOYSTICK_DIRECTINPUT, "0");
m_hotplug_thread = std::thread([this] {
Common::SetCurrentThreadName("SDL Hotplug Thread");
Common::ScopeGuard quit_guard([] {
// TODO: there seems to be some sort of memory leak with SDL, quit isn't freeing everything up
SDL_Quit();