Skip to content

Commit

Permalink
iOS: Set the 'player index' of MFi game controllers when they're open…
Browse files Browse the repository at this point in the history
…ed for use.

MFi controllers display their player index via LEDs on the controller.
  • Loading branch information
slime73 committed Nov 9, 2015
1 parent 84f6bc4 commit 0da5980
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/joystick/iphoneos/SDL_sysjoystick.m
Expand Up @@ -361,6 +361,25 @@ SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index)
} else {
#ifdef SDL_JOYSTICK_MFI
GCController *controller = device->controller;
BOOL usedPlayerIndexSlots[4] = {NO, NO, NO, NO};

/* Find the player index of all other connected controllers. */
for (GCController *c in [GCController controllers]) {
if (c != controller && c.playerIndex >= 0) {
usedPlayerIndexSlots[c.playerIndex] = YES;
}
}

/* Set this controller's player index to the first unused index.
* FIXME: This logic isn't great... but SDL doesn't expose this
* concept in its external API, so we don't have much to go on. */
for (int i = 0; i < 4; i++) {
if (!usedPlayerIndexSlots[i]) {
controller.playerIndex = i;
break;
}
}

controller.controllerPausedHandler = ^(GCController *controller) {
if (joystick->hwdata) {
++joystick->hwdata->num_pause_presses;
Expand Down

0 comments on commit 0da5980

Please sign in to comment.