Fix web joystick vibration on Safari

This commit is contained in:
Nintorch 2026-05-17 20:22:21 +05:00 committed by Sam Lantinga
parent 38e7155cd6
commit e0eb40f65f

View file

@ -506,7 +506,7 @@ static bool EMSCRIPTEN_JoystickOpen(SDL_Joystick *joystick, int device_index)
item->rumble_available = MAIN_THREAD_EM_ASM_INT({
let gamepad = navigator['getGamepads']()[$0];
return gamepad && gamepad['vibrationActuator'] && gamepad['vibrationActuator']['effects'] && gamepad['vibrationActuator']['effects']['includes']('dual-rumble');
return gamepad && gamepad['vibrationActuator']; // Don't check the vibrationActuator.effects array here, because it's not defined in Safari
}, item->index);
if (item->rumble_available) {
@ -515,6 +515,7 @@ static bool EMSCRIPTEN_JoystickOpen(SDL_Joystick *joystick, int device_index)
item->trigger_rumble_available = MAIN_THREAD_EM_ASM_INT({
let gamepad = navigator['getGamepads']()[$0];
// This effect is not supported in Safari, so it's okay for us to check the vibrationActuator.effects array here for the browsers that do support it
return gamepad && gamepad['vibrationActuator'] && gamepad['vibrationActuator']['effects'] && gamepad['vibrationActuator']['effects']['includes']('trigger-rumble');
}, item->index);