diff --git a/src/joystick/emscripten/SDL_sysjoystick.c b/src/joystick/emscripten/SDL_sysjoystick.c index cf9e7d96b..92b831a05 100644 --- a/src/joystick/emscripten/SDL_sysjoystick.c +++ b/src/joystick/emscripten/SDL_sysjoystick.c @@ -189,13 +189,16 @@ EMSCRIPTEN_JoystickInit(void) EmscriptenGamepadEvent gamepadState; numjoysticks = 0; - numjs = emscripten_get_num_gamepads(); + + retval = emscripten_sample_gamepad_data(); /* Check if gamepad is supported by browser */ - if (numjs == EMSCRIPTEN_RESULT_NOT_SUPPORTED) { + if (retval == EMSCRIPTEN_RESULT_NOT_SUPPORTED) { return SDL_SetError("Gamepads not supported"); } + numjs = emscripten_get_num_gamepads(); + /* handle already connected gamepads */ if (numjs > 0) { for(i = 0; i < numjs; i++) { @@ -335,6 +338,8 @@ EMSCRIPTEN_JoystickUpdate(SDL_Joystick * joystick) SDL_joylist_item *item = (SDL_joylist_item *) joystick->hwdata; int i, result, buttonState; + emscripten_sample_gamepad_data(); + if (item) { result = emscripten_get_gamepad_status(item->index, &gamepadState); if( result == EMSCRIPTEN_RESULT_SUCCESS) {