diff --git a/retroarch.c b/retroarch.c index bfe42d6e8a..08245321d5 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3083,14 +3083,7 @@ static int16_t input_state_internal( res |= (1 << id); } else - { - rarch_joypad_info_t joypad_info; - joypad_info.axis_threshold = input_driver_axis_threshold; - joypad_info.joy_idx = settings->uints.input_joypad_map[port]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - res = current_input->input_state( - current_input_data, joypad_info, libretro_input_binds, port, device, idx, id); - } + res = ret; #ifdef HAVE_OVERLAY if (input_overlay_is_alive(overlay_ptr) && port == 0) @@ -3157,6 +3150,12 @@ static int16_t input_state_internal( int16_t input_state(unsigned port, unsigned device, unsigned idx, unsigned id) { + rarch_joypad_info_t joypad_info; + int16_t ret = 0; + joypad_info.axis_threshold = input_driver_axis_threshold; + joypad_info.joy_idx = configuration_settings->uints.input_joypad_map[port]; + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; + if (bsv_movie_is_playback_on()) { int16_t bsv_result; @@ -3166,19 +3165,14 @@ int16_t input_state(unsigned port, unsigned device, } device &= RETRO_DEVICE_MASK; + ret = current_input->input_state( + current_input_data, joypad_info, libretro_input_binds, port, device, idx, id); + if ( (device == RETRO_DEVICE_JOYPAD) && (id == RETRO_DEVICE_ID_JOYPAD_MASK)) { unsigned i; int16_t res = 0; - int16_t ret = 0; - rarch_joypad_info_t joypad_info; - joypad_info.axis_threshold = input_driver_axis_threshold; - joypad_info.joy_idx = configuration_settings->uints.input_joypad_map[port]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - ret = current_input->input_state( - current_input_data, joypad_info, libretro_input_binds, port, device, idx, id); - for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) if (input_state_internal(ret, port, device, idx, i, true)) @@ -3186,7 +3180,7 @@ int16_t input_state(unsigned port, unsigned device, return res; } - return input_state_internal(0, port, device, idx, id, false); + return input_state_internal(ret, port, device, idx, id, false); } /**