Explorar o código

Fixed HIDAPI hotplug detection when initializing gamepads off the main thread

Sam Lantinga hai 3 semanas
pai
achega
d3f9899df5
Modificáronse 1 ficheiros con 11 adicións e 9 borrados
  1. 11 9
      src/hidapi/SDL_hidapi.c

+ 11 - 9
src/hidapi/SDL_hidapi.c

@@ -388,18 +388,20 @@ static void HIDAPI_UpdateDiscovery(void)
     }
 
 #if defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK)
-#if 0 // just let the usual SDL_PumpEvents loop dispatch these, fixing bug 4286. --ryan.
-    // We'll only get messages on the same thread that created the window
-    if (SDL_GetCurrentThreadID() == SDL_HIDAPI_discovery.m_nThreadID) {
-        MSG msg;
-        while (PeekMessage(&msg, SDL_HIDAPI_discovery.m_hwndMsg, 0, 0, PM_NOREMOVE)) {
-            if (GetMessageA(&msg, SDL_HIDAPI_discovery.m_hwndMsg, 0, 0) != 0) {
-                TranslateMessage(&msg);
-                DispatchMessage(&msg);
+    if (SDL_IsMainThread()) {
+        // 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
+        if (SDL_GetCurrentThreadID() == SDL_HIDAPI_discovery.m_nThreadID) {
+            MSG msg;
+            while (PeekMessage(&msg, SDL_HIDAPI_discovery.m_hwndMsg, 0, 0, PM_NOREMOVE)) {
+                if (GetMessageA(&msg, SDL_HIDAPI_discovery.m_hwndMsg, 0, 0) != 0) {
+                    TranslateMessage(&msg);
+                    DispatchMessage(&msg);
+                }
             }
         }
     }
-#endif
 #endif // defined(SDL_PLATFORM_WIN32) || defined(SDL_PLATFORM_WINGDK)
 
 #ifdef SDL_PLATFORM_MACOS