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;
}
bool SDL_IsVideoThread(void)
{
return (SDL_GetCurrentThreadID() == SDL_VideoThreadID);
}
// Initialize all the subsystems that require initialization before threads start
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
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.
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 (SDL_IsMainThread()) {
if (SDL_IsVideoThread()) {
// just let the usual SDL_PumpEvents loop dispatch these, fixing bug 2998. --ryan.
} else {
// We'll only get messages on the same thread that created the window