mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 14:12:51 +00:00
Fix crash on macOS (AS) when dualshock4 is removed
This commit is contained in:
parent
5045f46a5c
commit
283e31a3e2
@ -58,6 +58,7 @@ void joypad::free() {
|
||||
if (ff_device) {
|
||||
FFDeviceReleaseEffect(ff_device, ff_object);
|
||||
FFReleaseDevice(ff_device);
|
||||
ff_device = nullptr;
|
||||
memfree(ff_axes);
|
||||
memfree(ff_directions);
|
||||
}
|
||||
@ -243,7 +244,7 @@ void JoypadOSX::_device_added(IOReturn p_res, IOHIDDeviceRef p_device) {
|
||||
if (is_joypad(p_device)) {
|
||||
configure_joypad(p_device, &new_joypad);
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||
if (IOHIDDeviceGetService != nullptr) {
|
||||
if (IOHIDDeviceGetService) {
|
||||
#endif
|
||||
const io_service_t ioservice = IOHIDDeviceGetService(p_device);
|
||||
if ((ioservice) && (FFIsForceFeedback(ioservice) == FF_OK) && new_joypad.config_force_feedback(ioservice)) {
|
||||
@ -348,6 +349,7 @@ bool JoypadOSX::configure_joypad(IOHIDDeviceRef p_device_ref, joypad *p_joy) {
|
||||
{ \
|
||||
if (ret != FF_OK) { \
|
||||
FFReleaseDevice(ff_device); \
|
||||
ff_device = nullptr; \
|
||||
return false; \
|
||||
} \
|
||||
}
|
||||
@ -367,6 +369,7 @@ bool joypad::config_force_feedback(io_service_t p_service) {
|
||||
return true;
|
||||
}
|
||||
FFReleaseDevice(ff_device);
|
||||
ff_device = nullptr;
|
||||
return false;
|
||||
}
|
||||
#undef FF_ERR
|
||||
@ -601,7 +604,7 @@ JoypadOSX::JoypadOSX(Input *in) {
|
||||
|
||||
if (array) {
|
||||
hid_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
|
||||
if (hid_manager != nullptr) {
|
||||
if (hid_manager) {
|
||||
config_hid_manager(array);
|
||||
}
|
||||
CFRelease(array);
|
||||
|
@ -68,8 +68,8 @@ struct joypad {
|
||||
|
||||
io_service_t ffservice = 0; /* Interface for force feedback, 0 = no ff */
|
||||
FFCONSTANTFORCE ff_constant_force;
|
||||
FFDeviceObjectReference ff_device;
|
||||
FFEffectObjectReference ff_object;
|
||||
FFDeviceObjectReference ff_device = nullptr;
|
||||
FFEffectObjectReference ff_object = nullptr;
|
||||
uint64_t ff_timestamp = 0;
|
||||
LONG *ff_directions = nullptr;
|
||||
FFEFFECT ff_effect;
|
||||
|
Loading…
Reference in New Issue
Block a user