From cca094225a3e595249065c3dc21f540e616bd443 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 6 Oct 2013 20:39:23 -0700 Subject: [PATCH] Only allocate a joystick instance ID once we know it's a joystick. This fixes compatibility with code that assumes 0 based joystick instance IDs. --- src/joystick/darwin/SDL_sysjoystick.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 6a75e0819b8f0..55ec41ed8a69d 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -589,7 +589,6 @@ HIDBuildDevice(io_object_t hidDevice) if (kIOReturnSuccess == result) { HIDGetDeviceInfo(hidDevice, hidProperties, pDevice); /* hidDevice used to find parents in registry tree */ HIDGetCollectionElements(hidProperties, pDevice); - pDevice->instance_id = ++s_joystick_instance_id; } else { DisposePtr((Ptr) pDevice); pDevice = NULL; @@ -678,6 +677,9 @@ AddDeviceHelper( io_object_t ioHIDDeviceObject ) return 0; } + /* Allocate an instance ID for this device */ + device->instance_id = ++s_joystick_instance_id; + /* We have to do some storage of the io_service_t for * SDL_HapticOpenFromJoystick */ if (FFIsForceFeedback(ioHIDDeviceObject) == FF_OK) {