소스 검색

Get the current WGI controller list at startup

On Win32 this list is empty and we always get controller added events. On UWP, this list is populated and we don't get controlle added events for currently connected controllers.
Sam Lantinga 4 년 전
부모
커밋
09b7ca27d6
1개의 변경된 파일18개의 추가작업 그리고 0개의 파일을 삭제
  1. 18 0
      src/joystick/windows/SDL_windows_gaming_input.c

+ 18 - 0
src/joystick/windows/SDL_windows_gaming_input.c

@@ -532,6 +532,24 @@ WGI_JoystickInit(void)
         if (!SUCCEEDED(hr)) {
             SDL_SetError("add_RawGameControllerRemoved() failed: 0x%lx\n", hr);
         }
+
+        __FIVectorView_1_Windows__CGaming__CInput__CRawGameController *controllers;
+        hr = __x_ABI_CWindows_CGaming_CInput_CIRawGameControllerStatics_get_RawGameControllers(wgi.statics, &controllers);
+        if (SUCCEEDED(hr)) {
+            unsigned i, count = 0;
+
+            hr = __FIVectorView_1_Windows__CGaming__CInput__CRawGameController_get_Size(controllers, &count);
+            if (SUCCEEDED(hr)) {
+                for (i = 0; i < count; ++i) {
+                    __x_ABI_CWindows_CGaming_CInput_CIRawGameController *e = NULL;
+
+                    hr = __FIVectorView_1_Windows__CGaming__CInput__CRawGameController_GetAt(controllers, i, &e);
+                    if (SUCCEEDED(hr) && e) {
+                        IEventHandler_CRawGameControllerVtbl_InvokeAdded(&controller_added, (IInspectable *)controllers, e);
+                    }
+                }
+            }
+        }
     }
 
     return 0;