From 4797970bfa6d6258bc9e636b6797acdfc1e73c31 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Thu, 2 Jan 2025 10:02:59 -0800
Subject: [PATCH] Enable SDL_HINT_JOYSTICK_THREAD by default
If you're not using SDL for video you won't get raw input messages without this hint, and this is tripping up enough people it makes sense to have this enabled by default. There isn't much downside to this, other than having another thread processing Xbox controller input.
Fixes https://github.com/libsdl-org/SDL/issues/10576
---
include/SDL3/SDL_hints.h | 4 ++--
src/joystick/windows/SDL_windowsjoystick.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/SDL3/SDL_hints.h b/include/SDL3/SDL_hints.h
index 1449492b8e060..310aa64711f58 100644
--- a/include/SDL3/SDL_hints.h
+++ b/include/SDL3/SDL_hints.h
@@ -2098,8 +2098,8 @@ extern "C" {
*
* The variable can be set to the following values:
*
- * - "0": A separate thread is not used. (default)
- * - "1": A separate thread is used for handling raw input messages.
+ * - "0": A separate thread is not used.
+ * - "1": A separate thread is used for handling raw input messages. (default)
*
* This hint should be set before SDL is initialized.
*
diff --git a/src/joystick/windows/SDL_windowsjoystick.c b/src/joystick/windows/SDL_windowsjoystick.c
index 1accf174a3bcb..e7fbfcb34628d 100644
--- a/src/joystick/windows/SDL_windowsjoystick.c
+++ b/src/joystick/windows/SDL_windowsjoystick.c
@@ -284,7 +284,7 @@ static bool SDL_StartJoystickThread(void)
}
s_bJoystickThreadQuit = false;
- s_joystickThread = SDL_CreateThreadWithStackSize(SDL_JoystickThread, "SDL_joystick", 64 * 1024, NULL);
+ s_joystickThread = SDL_CreateThread(SDL_JoystickThread, "SDL_joystick", NULL);
if (!s_joystickThread) {
return false;
}
@@ -344,7 +344,7 @@ static bool WINDOWS_JoystickInit(void)
WIN_InitDeviceNotification();
#if !defined(SDL_PLATFORM_XBOXONE) && !defined(SDL_PLATFORM_XBOXSERIES)
- s_bJoystickThread = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_THREAD, false);
+ s_bJoystickThread = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_THREAD, true);
if (s_bJoystickThread) {
if (!SDL_StartJoystickThread()) {
return false;