From aa870d511e988061748ec9717fc2f8a80b8797d4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 27 May 2025 09:43:26 -0700 Subject: [PATCH] Disable SDL_HINT_JOYSTICK_RAWINPUT by default Windows can get in a state when it stops reporting raw input events for game controllers until reboot. The downside of this change is that we lose support for trigger rumble and are limited to 4 controllers again, but if that's important for your application you can use SDL_SetHint(SDL_HINT_JOYSTICK_RAWINPUT, true) to enable this functionality. Fixes https://github.com/libsdl-org/SDL/issues/13047 --- include/SDL3/SDL_hints.h | 4 ++-- src/joystick/windows/SDL_rawinputjoystick.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h index 443776bebc..7961157ccf 100644 --- a/include/SDL3/SDL_hints.h +++ b/include/SDL3/SDL_hints.h @@ -2096,8 +2096,8 @@ extern "C" { * * The variable can be set to the following values: * - * - "0": RAWINPUT drivers are not used. - * - "1": RAWINPUT drivers are used. (default) + * - "0": RAWINPUT drivers are not used. (default) + * - "1": RAWINPUT drivers are used. * * This hint should be set before SDL is initialized. * diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c index f37a1d81ce..8590d9a836 100644 --- a/src/joystick/windows/SDL_rawinputjoystick.c +++ b/src/joystick/windows/SDL_rawinputjoystick.c @@ -1030,7 +1030,7 @@ static bool RAWINPUT_JoystickInit(void) { SDL_assert(!SDL_RAWINPUT_inited); - if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT, true)) { + if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT, false)) { return true; }