Skip to content
Permalink
Browse files

iOS: Set the 'player index' of MFi game controllers when they're open…

…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 0da59802aa9572e5f7c4791c45f778f99456a00d
Showing with 19 additions and 0 deletions.
  1. +19 −0 src/joystick/iphoneos/SDL_sysjoystick.m
@@ -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;

0 comments on commit 0da5980

Please sign in to comment.