Bläddra i källkod

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.

Sam Lantinga 11 år sedan
förälder
incheckning
cca094225a
1 ändrade filer med 3 tillägg och 1 borttagningar
  1. 3 1
      src/joystick/darwin/SDL_sysjoystick.c

+ 3 - 1
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) {