summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/SDL2/src/joystick/iphoneos
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/SDL2/src/joystick/iphoneos')
-rw-r--r--3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick.m725
-rw-r--r--3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick_c.h55
2 files changed, 0 insertions, 780 deletions
diff --git a/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick.m b/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick.m
deleted file mode 100644
index eb7e000321e..00000000000
--- a/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick.m
+++ /dev/null
@@ -1,725 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-/* This is the iOS implementation of the SDL joystick API */
-#include "SDL_sysjoystick_c.h"
-
-/* needed for SDL_IPHONE_MAX_GFORCE macro */
-#include "SDL_config_iphoneos.h"
-
-#include "SDL_events.h"
-#include "SDL_joystick.h"
-#include "SDL_hints.h"
-#include "SDL_stdinc.h"
-#include "../SDL_sysjoystick.h"
-#include "../SDL_joystick_c.h"
-
-#if !SDL_EVENTS_DISABLED
-#include "../../events/SDL_events_c.h"
-#endif
-
-#if !TARGET_OS_TV
-#import <CoreMotion/CoreMotion.h>
-#endif
-
-#ifdef SDL_JOYSTICK_MFI
-#import <GameController/GameController.h>
-
-static id connectObserver = nil;
-static id disconnectObserver = nil;
-#endif /* SDL_JOYSTICK_MFI */
-
-#if !TARGET_OS_TV
-static const char *accelerometerName = "iOS Accelerometer";
-static CMMotionManager *motionManager = nil;
-#endif /* !TARGET_OS_TV */
-
-static SDL_JoystickDeviceItem *deviceList = NULL;
-
-static int numjoysticks = 0;
-static SDL_JoystickID instancecounter = 0;
-
-static SDL_JoystickDeviceItem *
-GetDeviceForIndex(int device_index)
-{
- SDL_JoystickDeviceItem *device = deviceList;
- int i = 0;
-
- while (i < device_index) {
- if (device == NULL) {
- return NULL;
- }
- device = device->next;
- i++;
- }
-
- return device;
-}
-
-static void
-SDL_SYS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCController *controller)
-{
-#ifdef SDL_JOYSTICK_MFI
- const char *name = NULL;
- /* Explicitly retain the controller because SDL_JoystickDeviceItem is a
- * struct, and ARC doesn't work with structs. */
- device->controller = (__bridge GCController *) CFBridgingRetain(controller);
-
- if (controller.vendorName) {
- name = controller.vendorName.UTF8String;
- }
-
- if (!name) {
- name = "MFi Gamepad";
- }
-
- device->name = SDL_strdup(name);
-
- device->guid.data[0] = 'M';
- device->guid.data[1] = 'F';
- device->guid.data[2] = 'i';
- device->guid.data[3] = 'G';
- device->guid.data[4] = 'a';
- device->guid.data[5] = 'm';
- device->guid.data[6] = 'e';
- device->guid.data[7] = 'p';
- device->guid.data[8] = 'a';
- device->guid.data[9] = 'd';
-
- if (controller.extendedGamepad) {
- device->guid.data[10] = 1;
- } else if (controller.gamepad) {
- device->guid.data[10] = 2;
- }
-#if TARGET_OS_TV
- else if (controller.microGamepad) {
- device->guid.data[10] = 3;
- }
-#endif /* TARGET_OS_TV */
-
- if (controller.extendedGamepad) {
- device->naxes = 6; /* 2 thumbsticks and 2 triggers */
- device->nhats = 1; /* d-pad */
- device->nbuttons = 7; /* ABXY, shoulder buttons, pause button */
- } else if (controller.gamepad) {
- device->naxes = 0; /* no traditional analog inputs */
- device->nhats = 1; /* d-pad */
- device->nbuttons = 7; /* ABXY, shoulder buttons, pause button */
- }
-#if TARGET_OS_TV
- else if (controller.microGamepad) {
- device->naxes = 2; /* treat the touch surface as two axes */
- device->nhats = 0; /* apparently the touch surface-as-dpad is buggy */
- device->nbuttons = 3; /* AX, pause button */
-
- controller.microGamepad.allowsRotation = SDL_GetHintBoolean(SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION, SDL_FALSE);
- }
-#endif /* TARGET_OS_TV */
-
- /* This will be set when the first button press of the controller is
- * detected. */
- controller.playerIndex = -1;
-
-#endif /* SDL_JOYSTICK_MFI */
-}
-
-static void
-SDL_SYS_AddJoystickDevice(GCController *controller, SDL_bool accelerometer)
-{
- SDL_JoystickDeviceItem *device = deviceList;
-
- while (device != NULL) {
- if (device->controller == controller) {
- return;
- }
- device = device->next;
- }
-
- device = (SDL_JoystickDeviceItem *) SDL_malloc(sizeof(SDL_JoystickDeviceItem));
- if (device == NULL) {
- return;
- }
-
- SDL_zerop(device);
-
- device->accelerometer = accelerometer;
- device->instance_id = instancecounter++;
-
- if (accelerometer) {
-#if TARGET_OS_TV
- SDL_free(device);
- return;
-#else
- device->name = SDL_strdup(accelerometerName);
- device->naxes = 3; /* Device acceleration in the x, y, and z axes. */
- device->nhats = 0;
- device->nbuttons = 0;
-
- /* Use the accelerometer name as a GUID. */
- SDL_memcpy(&device->guid.data, device->name, SDL_min(sizeof(SDL_JoystickGUID), SDL_strlen(device->name)));
-#endif /* TARGET_OS_TV */
- } else if (controller) {
- SDL_SYS_AddMFIJoystickDevice(device, controller);
- }
-
- if (deviceList == NULL) {
- deviceList = device;
- } else {
- SDL_JoystickDeviceItem *lastdevice = deviceList;
- while (lastdevice->next != NULL) {
- lastdevice = lastdevice->next;
- }
- lastdevice->next = device;
- }
-
- ++numjoysticks;
-
- SDL_PrivateJoystickAdded(numjoysticks - 1);
-}
-
-static SDL_JoystickDeviceItem *
-SDL_SYS_RemoveJoystickDevice(SDL_JoystickDeviceItem *device)
-{
- SDL_JoystickDeviceItem *prev = NULL;
- SDL_JoystickDeviceItem *next = NULL;
- SDL_JoystickDeviceItem *item = deviceList;
-
- if (device == NULL) {
- return NULL;
- }
-
- next = device->next;
-
- while (item != NULL) {
- if (item == device) {
- break;
- }
- prev = item;
- item = item->next;
- }
-
- /* Unlink the device item from the device list. */
- if (prev) {
- prev->next = device->next;
- } else if (device == deviceList) {
- deviceList = device->next;
- }
-
- if (device->joystick) {
- device->joystick->hwdata = NULL;
- }
-
-#ifdef SDL_JOYSTICK_MFI
- @autoreleasepool {
- if (device->controller) {
- /* The controller was explicitly retained in the struct, so it
- * should be explicitly released before freeing the struct. */
- GCController *controller = CFBridgingRelease((__bridge CFTypeRef)(device->controller));
- controller.controllerPausedHandler = nil;
- device->controller = nil;
- }
- }
-#endif /* SDL_JOYSTICK_MFI */
-
- --numjoysticks;
-
- SDL_PrivateJoystickRemoved(device->instance_id);
-
- SDL_free(device->name);
- SDL_free(device);
-
- return next;
-}
-
-#if TARGET_OS_TV
-static void
-SDL_AppleTVRemoteRotationHintChanged(void *udata, const char *name, const char *oldValue, const char *newValue)
-{
- BOOL allowRotation = newValue != NULL && *newValue != '0';
-
- @autoreleasepool {
- for (GCController *controller in [GCController controllers]) {
- if (controller.microGamepad) {
- controller.microGamepad.allowsRotation = allowRotation;
- }
- }
- }
-}
-#endif /* TARGET_OS_TV */
-
-/* Function to scan the system for joysticks.
- * Joystick 0 should be the system default joystick.
- * It should return 0, or -1 on an unrecoverable fatal error.
- */
-int
-SDL_SYS_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 */
- SDL_SYS_AddJoystickDevice(nil, SDL_TRUE);
- }
-#endif /* !TARGET_OS_TV */
-
-#ifdef SDL_JOYSTICK_MFI
- /* GameController.framework was added in iOS 7. */
- if (![GCController class]) {
- return numjoysticks;
- }
-
- for (GCController *controller in [GCController controllers]) {
- SDL_SYS_AddJoystickDevice(controller, SDL_FALSE);
- }
-
-#if TARGET_OS_TV
- SDL_AddHintCallback(SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION,
- SDL_AppleTVRemoteRotationHintChanged, NULL);
-#endif /* TARGET_OS_TV */
-
- connectObserver = [center addObserverForName:GCControllerDidConnectNotification
- object:nil
- queue:nil
- usingBlock:^(NSNotification *note) {
- GCController *controller = note.object;
- SDL_SYS_AddJoystickDevice(controller, SDL_FALSE);
- }];
-
- disconnectObserver = [center addObserverForName:GCControllerDidDisconnectNotification
- object:nil
- queue:nil
- usingBlock:^(NSNotification *note) {
- GCController *controller = note.object;
- SDL_JoystickDeviceItem *device = deviceList;
- while (device != NULL) {
- if (device->controller == controller) {
- SDL_SYS_RemoveJoystickDevice(device);
- break;
- }
- device = device->next;
- }
- }];
-#endif /* SDL_JOYSTICK_MFI */
- }
-
- return numjoysticks;
-}
-
-int SDL_SYS_NumJoysticks()
-{
- return numjoysticks;
-}
-
-void SDL_SYS_JoystickDetect()
-{
-}
-
-/* Function to get the device-dependent name of a joystick */
-const char *
-SDL_SYS_JoystickNameForDeviceIndex(int device_index)
-{
- SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index);
- return device ? device->name : "Unknown";
-}
-
-/* Function to perform the mapping from device index to the instance id for this index */
-SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index)
-{
- SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index);
- return device ? device->instance_id : 0;
-}
-
-/* Function to open a joystick for use.
- The joystick to open is specified by the device index.
- This should fill the nbuttons and naxes fields of the joystick structure.
- It returns 0, or -1 if there is an error.
- */
-int
-SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index)
-{
- SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index);
- if (device == NULL) {
- return SDL_SetError("Could not open Joystick: no hardware device for the specified index");
- }
-
- joystick->hwdata = device;
- joystick->instance_id = device->instance_id;
-
- joystick->naxes = device->naxes;
- joystick->nhats = device->nhats;
- joystick->nbuttons = device->nbuttons;
- joystick->nballs = 0;
-
- device->joystick = joystick;
-
- @autoreleasepool {
- if (device->accelerometer) {
-#if !TARGET_OS_TV
- if (motionManager == nil) {
- motionManager = [[CMMotionManager alloc] init];
- }
-
- /* Shorter times between updates can significantly increase CPU usage. */
- motionManager.accelerometerUpdateInterval = 0.1;
- [motionManager startAccelerometerUpdates];
-#endif /* !TARGET_OS_TV */
- } else {
-#ifdef SDL_JOYSTICK_MFI
- GCController *controller = device->controller;
- controller.controllerPausedHandler = ^(GCController *c) {
- if (joystick->hwdata) {
- ++joystick->hwdata->num_pause_presses;
- }
- };
-#endif /* SDL_JOYSTICK_MFI */
- }
- }
-
- return 0;
-}
-
-/* Function to determine if this joystick is attached to the system right now */
-SDL_bool
-SDL_SYS_JoystickAttached(SDL_Joystick *joystick)
-{
- return joystick->hwdata != NULL;
-}
-
-static void
-SDL_SYS_AccelerometerUpdate(SDL_Joystick * joystick)
-{
-#if !TARGET_OS_TV
- const float maxgforce = SDL_IPHONE_MAX_GFORCE;
- const SInt16 maxsint16 = 0x7FFF;
- CMAcceleration accel;
-
- @autoreleasepool {
- if (!motionManager.isAccelerometerActive) {
- return;
- }
-
- accel = motionManager.accelerometerData.acceleration;
- }
-
- /*
- Convert accelerometer data from floating point to Sint16, which is what
- the joystick system expects.
-
- To do the conversion, the data is first clamped onto the interval
- [-SDL_IPHONE_MAX_G_FORCE, SDL_IPHONE_MAX_G_FORCE], then the data is multiplied
- by MAX_SINT16 so that it is mapped to the full range of an Sint16.
-
- You can customize the clamped range of this function by modifying the
- SDL_IPHONE_MAX_GFORCE macro in SDL_config_iphoneos.h.
-
- Once converted to Sint16, the accelerometer data no longer has coherent
- units. You can convert the data back to units of g-force by multiplying
- it in your application's code by SDL_IPHONE_MAX_GFORCE / 0x7FFF.
- */
-
- /* clamp the data */
- accel.x = SDL_min(SDL_max(accel.x, -maxgforce), maxgforce);
- accel.y = SDL_min(SDL_max(accel.y, -maxgforce), maxgforce);
- accel.z = SDL_min(SDL_max(accel.z, -maxgforce), maxgforce);
-
- /* pass in data mapped to range of SInt16 */
- SDL_PrivateJoystickAxis(joystick, 0, (accel.x / maxgforce) * maxsint16);
- SDL_PrivateJoystickAxis(joystick, 1, -(accel.y / maxgforce) * maxsint16);
- SDL_PrivateJoystickAxis(joystick, 2, (accel.z / maxgforce) * maxsint16);
-#endif /* !TARGET_OS_TV */
-}
-
-#ifdef SDL_JOYSTICK_MFI
-static Uint8
-SDL_SYS_MFIJoystickHatStateForDPad(GCControllerDirectionPad *dpad)
-{
- Uint8 hat = 0;
-
- if (dpad.up.isPressed) {
- hat |= SDL_HAT_UP;
- } else if (dpad.down.isPressed) {
- hat |= SDL_HAT_DOWN;
- }
-
- if (dpad.left.isPressed) {
- hat |= SDL_HAT_LEFT;
- } else if (dpad.right.isPressed) {
- hat |= SDL_HAT_RIGHT;
- }
-
- if (hat == 0) {
- return SDL_HAT_CENTERED;
- }
-
- return hat;
-}
-#endif
-
-static void
-SDL_SYS_MFIJoystickUpdate(SDL_Joystick * joystick)
-{
-#if SDL_JOYSTICK_MFI
- @autoreleasepool {
- GCController *controller = joystick->hwdata->controller;
- Uint8 hatstate = SDL_HAT_CENTERED;
- int i;
- int updateplayerindex = 0;
-
- if (controller.extendedGamepad) {
- GCExtendedGamepad *gamepad = controller.extendedGamepad;
-
- /* Axis order matches the XInput Windows mappings. */
- Sint16 axes[] = {
- (Sint16) (gamepad.leftThumbstick.xAxis.value * 32767),
- (Sint16) (gamepad.leftThumbstick.yAxis.value * -32767),
- (Sint16) ((gamepad.leftTrigger.value * 65535) - 32768),
- (Sint16) (gamepad.rightThumbstick.xAxis.value * 32767),
- (Sint16) (gamepad.rightThumbstick.yAxis.value * -32767),
- (Sint16) ((gamepad.rightTrigger.value * 65535) - 32768),
- };
-
- /* Button order matches the XInput Windows mappings. */
- Uint8 buttons[] = {
- gamepad.buttonA.isPressed, gamepad.buttonB.isPressed,
- gamepad.buttonX.isPressed, gamepad.buttonY.isPressed,
- gamepad.leftShoulder.isPressed,
- gamepad.rightShoulder.isPressed,
- };
-
- hatstate = SDL_SYS_MFIJoystickHatStateForDPad(gamepad.dpad);
-
- for (i = 0; i < SDL_arraysize(axes); i++) {
- /* The triggers (axes 2 and 5) are resting at -32768 but SDL
- * initializes its values to 0. We only want to make sure the
- * player index is up to date if the user actually moves an axis. */
- if ((i != 2 && i != 5) || axes[i] != -32768) {
- updateplayerindex |= (joystick->axes[i] != axes[i]);
- }
- SDL_PrivateJoystickAxis(joystick, i, axes[i]);
- }
-
- for (i = 0; i < SDL_arraysize(buttons); i++) {
- updateplayerindex |= (joystick->buttons[i] != buttons[i]);
- SDL_PrivateJoystickButton(joystick, i, buttons[i]);
- }
- } else if (controller.gamepad) {
- GCGamepad *gamepad = controller.gamepad;
-
- /* Button order matches the XInput Windows mappings. */
- Uint8 buttons[] = {
- gamepad.buttonA.isPressed, gamepad.buttonB.isPressed,
- gamepad.buttonX.isPressed, gamepad.buttonY.isPressed,
- gamepad.leftShoulder.isPressed,
- gamepad.rightShoulder.isPressed,
- };
-
- hatstate = SDL_SYS_MFIJoystickHatStateForDPad(gamepad.dpad);
-
- for (i = 0; i < SDL_arraysize(buttons); i++) {
- updateplayerindex |= (joystick->buttons[i] != buttons[i]);
- SDL_PrivateJoystickButton(joystick, i, buttons[i]);
- }
- }
-#if TARGET_OS_TV
- else if (controller.microGamepad) {
- GCMicroGamepad *gamepad = controller.microGamepad;
-
- Sint16 axes[] = {
- (Sint16) (gamepad.dpad.xAxis.value * 32767),
- (Sint16) (gamepad.dpad.yAxis.value * -32767),
- };
-
- for (i = 0; i < SDL_arraysize(axes); i++) {
- updateplayerindex |= (joystick->axes[i] != axes[i]);
- SDL_PrivateJoystickAxis(joystick, i, axes[i]);
- }
-
- /* Apparently the dpad values are not accurate enough to be useful. */
- /* hatstate = SDL_SYS_MFIJoystickHatStateForDPad(gamepad.dpad); */
-
- Uint8 buttons[] = {
- gamepad.buttonA.isPressed,
- gamepad.buttonX.isPressed,
- };
-
- for (i = 0; i < SDL_arraysize(buttons); i++) {
- updateplayerindex |= (joystick->buttons[i] != buttons[i]);
- SDL_PrivateJoystickButton(joystick, i, buttons[i]);
- }
-
- /* TODO: Figure out what to do with reportsAbsoluteDpadValues */
- }
-#endif /* TARGET_OS_TV */
-
- if (joystick->nhats > 0) {
- updateplayerindex |= (joystick->hats[0] != hatstate);
- SDL_PrivateJoystickHat(joystick, 0, hatstate);
- }
-
- for (i = 0; i < joystick->hwdata->num_pause_presses; i++) {
- /* The pause button is always last. */
- Uint8 pausebutton = joystick->nbuttons - 1;
-
- SDL_PrivateJoystickButton(joystick, pausebutton, SDL_PRESSED);
- SDL_PrivateJoystickButton(joystick, pausebutton, SDL_RELEASED);
-
- updateplayerindex = YES;
- }
-
- joystick->hwdata->num_pause_presses = 0;
-
- if (updateplayerindex && controller.playerIndex == -1) {
- 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 (i = 0; i < SDL_arraysize(usedPlayerIndexSlots); i++) {
- if (!usedPlayerIndexSlots[i]) {
- controller.playerIndex = i;
- break;
- }
- }
- }
- }
-#endif /* SDL_JOYSTICK_MFI */
-}
-
-/* Function to update the state of a joystick - called as a device poll.
- * This function shouldn't update the joystick structure directly,
- * but instead should call SDL_PrivateJoystick*() to deliver events
- * and update joystick device state.
- */
-void
-SDL_SYS_JoystickUpdate(SDL_Joystick * joystick)
-{
- SDL_JoystickDeviceItem *device = joystick->hwdata;
-
- if (device == NULL) {
- return;
- }
-
- if (device->accelerometer) {
- SDL_SYS_AccelerometerUpdate(joystick);
- } else if (device->controller) {
- SDL_SYS_MFIJoystickUpdate(joystick);
- }
-}
-
-/* Function to close a joystick after use */
-void
-SDL_SYS_JoystickClose(SDL_Joystick * joystick)
-{
- SDL_JoystickDeviceItem *device = joystick->hwdata;
-
- if (device == NULL) {
- return;
- }
-
- device->joystick = NULL;
-
- @autoreleasepool {
- if (device->accelerometer) {
-#if !TARGET_OS_TV
- [motionManager stopAccelerometerUpdates];
-#endif /* !TARGET_OS_TV */
- } else if (device->controller) {
-#ifdef SDL_JOYSTICK_MFI
- GCController *controller = device->controller;
- controller.controllerPausedHandler = nil;
- controller.playerIndex = -1;
-#endif
- }
- }
-}
-
-/* Function to perform any system-specific joystick related cleanup */
-void
-SDL_SYS_JoystickQuit(void)
-{
- @autoreleasepool {
-#ifdef SDL_JOYSTICK_MFI
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
-
- if (connectObserver) {
- [center removeObserver:connectObserver name:GCControllerDidConnectNotification object:nil];
- connectObserver = nil;
- }
-
- if (disconnectObserver) {
- [center removeObserver:disconnectObserver name:GCControllerDidDisconnectNotification object:nil];
- disconnectObserver = nil;
- }
-
-#if TARGET_OS_TV
- SDL_DelHintCallback(SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION,
- SDL_AppleTVRemoteRotationHintChanged, NULL);
-#endif /* TARGET_OS_TV */
-#endif /* SDL_JOYSTICK_MFI */
-
- while (deviceList != NULL) {
- SDL_SYS_RemoveJoystickDevice(deviceList);
- }
-
-#if !TARGET_OS_TV
- motionManager = nil;
-#endif /* !TARGET_OS_TV */
- }
-
- numjoysticks = 0;
-}
-
-SDL_JoystickGUID
-SDL_SYS_JoystickGetDeviceGUID( int device_index )
-{
- SDL_JoystickDeviceItem *device = GetDeviceForIndex(device_index);
- SDL_JoystickGUID guid;
- if (device) {
- guid = device->guid;
- } else {
- SDL_zero(guid);
- }
- return guid;
-}
-
-SDL_JoystickGUID
-SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick)
-{
- SDL_JoystickGUID guid;
- if (joystick->hwdata) {
- guid = joystick->hwdata->guid;
- } else {
- SDL_zero(guid);
- }
- return guid;
-}
-
-/* vi: set ts=4 sw=4 expandtab: */
diff --git a/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick_c.h b/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick_c.h
deleted file mode 100644
index be0ddf068af..00000000000
--- a/3rdparty/SDL2/src/joystick/iphoneos/SDL_sysjoystick_c.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- Simple DirectMedia Layer
- Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-*/
-#include "../../SDL_internal.h"
-
-#ifndef SDL_JOYSTICK_IOS_H
-#define SDL_JOYSTICK_IOS_H
-
-#include "SDL_stdinc.h"
-#include "../SDL_sysjoystick.h"
-
-@class GCController;
-
-typedef struct joystick_hwdata
-{
- SDL_bool accelerometer;
-
- GCController __unsafe_unretained *controller;
- int num_pause_presses;
-
- char *name;
- SDL_Joystick *joystick;
- SDL_JoystickID instance_id;
- SDL_JoystickGUID guid;
-
- int naxes;
- int nbuttons;
- int nhats;
-
- struct joystick_hwdata *next;
-} joystick_hwdata;
-
-typedef joystick_hwdata SDL_JoystickDeviceItem;
-
-#endif /* SDL_JOYSTICK_IOS_H */
-
-
-/* vi: set ts=4 sw=4 expandtab: */