diff --git a/input/input_config.c b/input/input_config.c index 12dc0fef03..c6906d9bc0 100644 --- a/input/input_config.c +++ b/input/input_config.c @@ -485,6 +485,18 @@ void input_config_set_device_name(unsigned port, const char *name) sizeof(settings->input.device_names[port])); } +bool input_config_get_bind_idx(unsigned port, unsigned *joy_idx_real) +{ + settings_t *settings = config_get_ptr(); + unsigned joy_idx = settings->input.joypad_map[port]; + + if (joy_idx >= MAX_USERS) + return false; + + *joy_idx_real = joy_idx; + return true; +} + const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned id) { settings_t *settings = config_get_ptr(); diff --git a/input/input_joypad_driver.c b/input/input_joypad_driver.c index 901920d542..5b7646148b 100644 --- a/input/input_joypad_driver.c +++ b/input/input_joypad_driver.c @@ -211,15 +211,14 @@ const char *input_joypad_name(const input_device_driver_t *drv, bool input_joypad_set_rumble(const input_device_driver_t *drv, unsigned port, enum retro_rumble_effect effect, uint16_t strength) { - settings_t *settings = config_get_ptr(); - unsigned joy_idx = settings->input.joypad_map[port]; + unsigned joy_idx = 0; + + if (!input_config_get_bind_idx(port, &joy_idx)) + return false; if (!drv || !drv->set_rumble) return false; - if (joy_idx >= MAX_USERS) - return false; - return drv->set_rumble(joy_idx, effect, strength); } diff --git a/input/input_joypad_driver.h b/input/input_joypad_driver.h index bdcc47e2a1..d6b2d2f381 100644 --- a/input/input_joypad_driver.h +++ b/input/input_joypad_driver.h @@ -217,6 +217,8 @@ bool input_joypad_hat_raw(const input_device_driver_t *driver, const char *input_joypad_name(const input_device_driver_t *driver, unsigned port); +bool input_config_get_bind_idx(unsigned port, unsigned *joy_idx_real); + extern input_device_driver_t dinput_joypad; extern input_device_driver_t linuxraw_joypad; extern input_device_driver_t parport_joypad;