Fixed HIDAPI hotplug detection in applications that don't initialize video

This commit is contained in:
Sam Lantinga
2026-02-11 09:11:37 -08:00
parent d3f9899df5
commit eaeca340f3
3 changed files with 9 additions and 1 deletions

View File

@@ -280,6 +280,11 @@ bool SDL_IsMainThread(void)
return true; return true;
} }
bool SDL_IsVideoThread(void)
{
return (SDL_GetCurrentThreadID() == SDL_VideoThreadID);
}
// Initialize all the subsystems that require initialization before threads start // Initialize all the subsystems that require initialization before threads start
void SDL_InitMainThread(void) void SDL_InitMainThread(void)
{ {

View File

@@ -307,6 +307,9 @@ extern SDL_NORETURN void SDL_ExitProcess(int exitcode);
// Do any initialization that needs to happen before threads are started // Do any initialization that needs to happen before threads are started
extern void SDL_InitMainThread(void); extern void SDL_InitMainThread(void);
// Return true if this thread has initialized video
extern bool SDL_IsVideoThread(void);
/* The internal implementations of these functions have up to nanosecond precision. /* The internal implementations of these functions have up to nanosecond precision.
We can expose these functions as part of the API if we want to later. We can expose these functions as part of the API if we want to later.
*/ */

View File

@@ -388,7 +388,7 @@ static void HIDAPI_UpdateDiscovery(void)
} }
#if defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK) #if defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK)
if (SDL_IsMainThread()) { if (SDL_IsVideoThread()) {
// just let the usual SDL_PumpEvents loop dispatch these, fixing bug 2998. --ryan. // just let the usual SDL_PumpEvents loop dispatch these, fixing bug 2998. --ryan.
} else { } else {
// We'll only get messages on the same thread that created the window // We'll only get messages on the same thread that created the window