ソースを参照

Generate SDL_CONTROLLERDEVICEADDED events for controllers connected at startup

Sam Lantinga 11 年 前
コミット
03aece5452
1 ファイル変更11 行追加2 行削除
  1. 11 2
      src/joystick/SDL_gamecontroller.c

+ 11 - 2
src/joystick/SDL_gamecontroller.c

@@ -866,8 +866,7 @@ SDL_GameControllerInit(void)
     const char *pMappingString = NULL;
     s_pSupportedControllers = NULL;
     pMappingString = s_ControllerMappings[i];
-    while ( pMappingString )
-    {
+    while ( pMappingString ) {
         SDL_GameControllerAddMapping( pMappingString );
 
         i++;
@@ -880,6 +879,16 @@ SDL_GameControllerInit(void)
     /* watch for joy events and fire controller ones if needed */
     SDL_AddEventWatch( SDL_GameControllerEventWatcher, NULL );
 
+    /* Send added events for controllers currently attached */
+    for (i = 0; i < SDL_NumJoysticks(); ++i) {
+        if (SDL_IsGameController(i)) {
+            SDL_Event deviceevent;
+            deviceevent.type = SDL_CONTROLLERDEVICEADDED;
+            deviceevent.cdevice.which = i;
+            SDL_PushEvent(&deviceevent);
+        }
+    }
+
     return (0);
 }