Browse Source

Send joystick added events on portable handheld platforms

The IDs on these drivers are hard-coded as device_index + 1, so that's the ID we will send during initialization.
Sam Lantinga 1 year ago
parent
commit
977285ef6a

+ 8 - 6
src/joystick/haiku/SDL_haikujoystick.cc

@@ -70,12 +70,14 @@ extern "C"
         for (i = 0; (numjoysticks < MAX_JOYSTICKS) && (i < nports); ++i) {
             if (joystick.GetDeviceName(i, name) == B_OK) {
                 if (joystick.Open(name) != B_ERROR) {
-                      BString stick_name;
-                      joystick.GetControllerName(&stick_name);
-                      SDL_joyport[numjoysticks] = SDL_strdup(name);
-                      SDL_joyname[numjoysticks] = SDL_CreateJoystickName(0, 0, NULL, stick_name.String());
-                      numjoysticks++;
-                      joystick.Close();
+                    BString stick_name;
+                    joystick.GetControllerName(&stick_name);
+                    SDL_joyport[numjoysticks] = SDL_strdup(name);
+                    SDL_joyname[numjoysticks] = SDL_CreateJoystickName(0, 0, NULL, stick_name.String());
+                    numjoysticks++;
+                    joystick.Close();
+
+                    SDL_PrivateJoystickAdded(numjoysticks);
                 }
             }
         }

+ 1 - 0
src/joystick/n3ds/SDL_sysjoystick.c

@@ -62,6 +62,7 @@ static void UpdateN3DSCStick(Uint64 timestamp, SDL_Joystick *joystick);
 static int N3DS_JoystickInit(void)
 {
     hidInit();
+    SDL_PrivateJoystickAdded(1);
     return 0;
 }
 

+ 1 - 0
src/joystick/ps2/SDL_sysjoystick.c

@@ -122,6 +122,7 @@ static int PS2_JoystickInit(void)
                 info->slot = (uint8_t)slot;
                 info->opened = 1;
                 enabled_pads++;
+                SDL_PrivateJoystickAdded(enabled_pads);
             }
         }
     }

+ 2 - 0
src/joystick/psp/SDL_sysjoystick.c

@@ -93,6 +93,8 @@ static int PSP_JoystickInit(void)
         analog_map[127 - i] = -1 * analog_map[i + 128];
     }
 
+    SDL_PrivateJoystickAdded(1);
+
     return 1;
 }
 

+ 3 - 2
src/joystick/vita/SDL_sysjoystick.c

@@ -124,7 +124,8 @@ static int VITA_JoystickInit(void)
     // after the app has already started.
 
     SDL_numjoysticks = 1;
-    SDL_PrivateJoystickAdded(0);
+    SDL_PrivateJoystickAdded(SDL_numjoysticks);
+
     // How many additional paired controllers are there?
     sceCtrlGetControllerPortInfo(&myPortInfo);
 
@@ -132,8 +133,8 @@ static int VITA_JoystickInit(void)
     // and that is the first one, so start at port 2
     for (i = 2; i <= 4; i++) {
         if (myPortInfo.port[i] != SCE_CTRL_TYPE_UNPAIRED) {
+            ++SDL_numjoysticks;
             SDL_PrivateJoystickAdded(SDL_numjoysticks);
-            SDL_numjoysticks++;
         }
     }
     return SDL_numjoysticks;