gamepad: don't panic when unknown button is encountered
This should only happen if SDL adds support for new buttons in the future.
This commit is contained in:
parent
4661c9609c
commit
a1142b1ffd
1 changed files with 10 additions and 1 deletions
|
@ -573,7 +573,8 @@ static GamepadButtonState* gamepad_button_state(GamepadButton button) {
|
|||
}
|
||||
}
|
||||
|
||||
log_fatal("Button id %i is invalid", button);
|
||||
log_warn("Unknown button id %i ignored", button);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char* gamepad_button_name_internal(GamepadButton btn);
|
||||
|
@ -613,6 +614,10 @@ static void gamepad_button(GamepadButton button, int state, bool is_repeat) {
|
|||
void *indev = (void*)(intptr_t)INDEV_GAMEPAD;
|
||||
GamepadButtonState *btnstate = gamepad_button_state(button);
|
||||
|
||||
if(UNLIKELY(btnstate == NULL)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(state == SDL_PRESSED) {
|
||||
if(is_repeat) {
|
||||
btnstate->repeat_time = time_get() + gamepad_repeat_interval(CONFIG_GAMEPAD_BTNREPEAT_INTERVAL);
|
||||
|
@ -676,6 +681,10 @@ static void gamepad_button(GamepadButton button, int state, bool is_repeat) {
|
|||
static void gamepad_handle_button_repeat(GamepadButton btn, hrtime_t time) {
|
||||
GamepadButtonState *state = gamepad_button_state(btn);
|
||||
|
||||
if(UNLIKELY(state == NULL)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(state->held && time >= state->repeat_time) {
|
||||
gamepad_button(btn, SDL_PRESSED, true);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue