Mercurial > sdl-ios-xcode
diff src/joystick/darwin/SDL_sysjoystick.c @ 2637:2f826c229d77 gsoc2008_force_feedback
First draft of darwin haptic<->joystick stuff.
author | Edgar Simo <bobbens@gmail.com> |
---|---|
date | Sun, 10 Aug 2008 19:45:38 +0000 |
parents | 9e7f58b1b255 |
children | db93456d4b26 |
line wrap: on
line diff
--- a/src/joystick/darwin/SDL_sysjoystick.c Wed Aug 06 17:14:54 2008 +0000 +++ b/src/joystick/darwin/SDL_sysjoystick.c Sun Aug 10 19:45:38 2008 +0000 @@ -545,6 +545,12 @@ /* save next device prior to disposing of this device */ pDeviceNext = (*ppDevice)->pNext; + /* free posible io_service_t */ + if ((*ppDevice)->ffservice) { + IOObjectRelease((*ppDevice)->ffservice); + (*ppDevice)->ffservice = 0; + } + /* free element lists */ HIDDisposeElementList(&(*ppDevice)->firstAxis); HIDDisposeElementList(&(*ppDevice)->firstButton); @@ -637,8 +643,16 @@ if (!device) continue; - /* dump device object, it is no longer needed */ - result = IOObjectRelease(ioHIDDeviceObject); + /* We have to do some storage of the io_service_t for + * SDL_HapticOpenFromJoystick */ + if (FFIsForceFeedback(device) == FF_OK) { + device->ffservice = ioHIDDeviceObject; + } + else { + device->ffservice = 0; + /* dump device object, it is no longer needed */ + result = IOObjectRelease(ioHIDDeviceObject); + } /* if (KERN_SUCCESS != result) HIDReportErrorNum ("IOObjectRelease error with ioHIDDeviceObject.", result); */