-void add_callback(void* inContext, IOReturn inResult, void* inSender, IOHIDDeviceRef device) {
- JoystickController* self = (JoystickController*)inContext;
-
- IOHIDDeviceOpen(device, kIOHIDOptionsTypeNone);
- IOHIDDeviceRegisterInputValueCallback(device, input_callback, (void*) self);
-
- Joystick *js = [[Joystick alloc] initWithDevice: device];
- [js setIndex: findAvailableIndex([self joysticks], js)];
-
+static void add_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDDeviceRef device) {
+ JoystickController *controller = (__bridge JoystickController *)ctx;
+ IOHIDDeviceRegisterInputValueCallback(device, input_callback, (__bridge void*)controller);
+ Joystick *js = [[Joystick alloc] initWithDevice:device];
+ js.index = findAvailableIndex(controller.joysticks, js);