diff --git a/src/joystick/iphoneos/SDL_sysjoystick.m b/src/joystick/iphoneos/SDL_sysjoystick.m index 12657ff10..4f413e976 100644 --- a/src/joystick/iphoneos/SDL_sysjoystick.m +++ b/src/joystick/iphoneos/SDL_sysjoystick.m @@ -393,8 +393,6 @@ static int IOS_JoystickInit(void) { @autoreleasepool { - NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - #if !TARGET_OS_TV if (SDL_GetHintBoolean(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, SDL_TRUE)) { /* Default behavior, accelerometer as joystick */ @@ -417,6 +415,8 @@ IOS_JoystickInit(void) SDL_AppleTVRemoteRotationHintChanged, NULL); #endif /* TARGET_OS_TV */ + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + connectObserver = [center addObserverForName:GCControllerDidConnectNotification object:nil queue:nil @@ -466,17 +466,24 @@ IOS_JoystickGetDeviceName(int device_index) static int IOS_JoystickGetDevicePlayerIndex(int device_index) { +#ifdef SDL_JOYSTICK_MFI SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index); - return device ? (int)device->controller.playerIndex : -1; + if (device && device->controller) { + return (int)device->controller.playerIndex; + } +#endif + return -1; } static void IOS_JoystickSetDevicePlayerIndex(int device_index, int player_index) { +#ifdef SDL_JOYSTICK_MFI SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index); - if (device) { + if (device && device->controller) { device->controller.playerIndex = player_index; } +#endif } static SDL_JoystickGUID