mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-13 07:03:54 +00:00
Fix web crash for joystick without vibration
(cherry picked from commit 4a0d66116f)
This commit is contained in:
@@ -502,7 +502,11 @@ 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 && 'vibrationActuator' in gamepad; // Don't check the vibrationActuator.effects array here, because it's not defined in Safari
|
||||
// Don't check the vibrationActuator.effects array here, because it's not defined in Safari
|
||||
if (!gamepad || !gamepad['vibrationActuator']) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}, item->index);
|
||||
|
||||
if (item->rumble_available) {
|
||||
@@ -512,7 +516,10 @@ 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 && 'vibrationActuator' in gamepad && 'effects' in gamepad['vibrationActuator'] && gamepad['vibrationActuator']['effects']['includes']('trigger-rumble');
|
||||
if (!gamepad || !gamepad['vibrationActuator'] || !gamepad['vibrationActuator']['effects'] || !gamepad['vibrationActuator']['effects']['includes']('trigger-rumble')) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}, item->index);
|
||||
|
||||
if (item->trigger_rumble_available) {
|
||||
|
||||
Reference in New Issue
Block a user