From 3087ceb4821226311f5caa505c6e82967c3121b1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 25 Apr 2017 20:47:21 +0200 Subject: [PATCH] Don't go through all these slow wrapper functions --- input/input_config.c | 13 ++++++++- input/input_config.h | 8 ++++++ input/input_driver.c | 63 ++++++++++++++++++++--------------------- runloop.c | 8 +++--- tasks/task_autodetect.c | 11 ------- tasks/tasks_internal.h | 5 ---- 6 files changed, 54 insertions(+), 54 deletions(-) diff --git a/input/input_config.c b/input/input_config.c index 14ded83a61..ce53896c8a 100644 --- a/input/input_config.c +++ b/input/input_config.c @@ -81,7 +81,8 @@ static const char *bind_user_prefix[MAX_USERS] = { static int input_config_vid[MAX_USERS]; static int input_config_pid[MAX_USERS]; -static struct retro_keybind input_config_binds[MAX_USERS][RARCH_BIND_LIST_END]; +struct retro_keybind input_config_binds[MAX_USERS][RARCH_BIND_LIST_END]; +struct retro_keybind input_autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; #define DECLARE_BIND(x, bind, desc) { true, 0, #x, desc, bind } #define DECLARE_META_BIND(level, x, bind, desc) { true, level, #x, desc, bind } @@ -607,3 +608,13 @@ void input_config_reset(void) input_config_pid[i] = 0; } } + +const struct retro_keybind *input_autoconfigure_get_specific_bind(unsigned i, unsigned j) +{ + return &input_autoconf_binds[i][j]; +} + +struct retro_keybind *input_autoconfigure_get_binds(unsigned i) +{ + return input_autoconf_binds[i]; +} diff --git a/input/input_config.h b/input/input_config.h index 58bb0daefe..73b8438c90 100644 --- a/input/input_config.h +++ b/input/input_config.h @@ -21,6 +21,9 @@ #include "input_driver.h" +extern struct retro_keybind input_config_binds[MAX_USERS][RARCH_BIND_LIST_END]; +extern struct retro_keybind input_autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; + const char *input_config_bind_map_get_base(unsigned i); unsigned input_config_bind_map_get_meta(unsigned i); @@ -95,6 +98,11 @@ const struct retro_keybind *input_config_get_specific_bind(unsigned i, unsigned struct retro_keybind *input_config_get_binds(unsigned i); +const struct retro_keybind * +input_autoconfigure_get_specific_bind(unsigned i, unsigned j); + +struct retro_keybind *input_autoconfigure_get_binds(unsigned i); + void input_config_reset(void); #endif diff --git a/input/input_driver.c b/input/input_driver.c index 11c18ecb59..7919297c6e 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -279,7 +279,7 @@ void input_poll(void) for (i = 0; i < max_users; i++) { - libretro_input_binds[i] = input_config_get_binds(i); + libretro_input_binds[i] = input_config_binds[i]; input_driver_turbo_btns.frame_enable[i] = 0; } @@ -293,7 +293,7 @@ void input_poll(void) if (libretro_input_binds[i][RARCH_TURBO_ENABLE].valid) { joypad_info.joy_idx = settings->input.joypad_map[i]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; input_driver_turbo_btns.frame_enable[i] = current_input->input_state( current_input_data, joypad_info, libretro_input_binds, @@ -387,7 +387,7 @@ int16_t input_state(unsigned port, unsigned device, joypad_info.axis_threshold = settings->input.axis_threshold; joypad_info.joy_idx = settings->input.joypad_map[port]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + 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); @@ -487,10 +487,10 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2) for (i = 0; i < max_users; i++) { - struct retro_keybind *general_binds = input_config_get_binds(i); - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *general_binds = input_config_binds[i]; + struct retro_keybind *auto_binds = input_autoconf_binds[i]; enum analog_dpad_mode dpad_mode = (enum analog_dpad_mode)settings->input.analog_dpad_mode[i]; - binds[i] = input_config_get_binds(i); + binds[i] = input_config_binds[i]; if (dpad_mode == ANALOG_DPAD_NONE) continue; @@ -511,7 +511,7 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2) if (binds[0][id].valid) { joypad_info.joy_idx = settings->input.joypad_map[0]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; *input1 |= (current_input->input_state(current_input_data, joypad_info, binds, 0, RETRO_DEVICE_JOYPAD, 0, id) ? 1 : 0) << i; @@ -519,7 +519,7 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2) if (binds[1][id].valid) { joypad_info.joy_idx = settings->input.joypad_map[1]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; *input2 |= (current_input->input_state(current_input_data, joypad_info, binds, 1, RETRO_DEVICE_JOYPAD, 0, id) ? 1 : 0) << i; @@ -529,8 +529,8 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2) for (i = 0; i < max_users; i++) { - struct retro_keybind *general_binds = input_config_get_binds(i); - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *general_binds = input_config_binds[i]; + struct retro_keybind *auto_binds = input_autoconf_binds[i]; input_pop_analog_dpad(general_binds); input_pop_analog_dpad(auto_binds); @@ -562,14 +562,14 @@ static INLINE bool input_menu_keys_pressed_internal( ? current_input->get_sec_joypad_driver(current_input_data) : NULL; joypad_info.joy_idx = settings->input.joypad_map[port]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; joypad_info.axis_threshold = settings->input.axis_threshold; if (sec && input_joypad_pressed(sec, - joypad_info, port, input_config_get_binds(0), i)) + joypad_info, port, input_config_binds[0], i)) return true; if (first && input_joypad_pressed(first, - joypad_info, port, input_config_get_binds(0), i)) + joypad_info, port, input_config_binds[0], i)) return true; } } @@ -693,7 +693,7 @@ uint64_t input_menu_keys_pressed( for (i = 0; i < max_users; i++) { - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *auto_binds = input_autoconf_binds[i]; input_push_analog_dpad(auto_binds, ANALOG_DPAD_LSTICK); } @@ -709,17 +709,17 @@ uint64_t input_menu_keys_pressed( && current_input->keyboard_mapping_is_blocked(current_input_data)) input_driver_block_hotkey = true; - binds_norm = input_config_get_specific_bind(0, RARCH_ENABLE_HOTKEY); + binds_norm = &input_config_binds[0][RARCH_ENABLE_HOTKEY]; binds_auto = input_autoconfigure_get_specific_bind(0, RARCH_ENABLE_HOTKEY); for (i = 0; i < max_users; i++) - binds[i] = input_config_get_binds(i); + binds[i] = input_config_binds[i]; if (check_input_driver_block_hotkey(binds_norm, binds_auto)) { - joypad_info.joy_idx = settings->input.joypad_map[0]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); - const struct retro_keybind *htkey = input_config_get_specific_bind(0, RARCH_ENABLE_HOTKEY); + joypad_info.joy_idx = settings->input.joypad_map[0]; + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; + const struct retro_keybind *htkey = &input_config_binds[0][RARCH_ENABLE_HOTKEY]; if (htkey->valid && current_input->input_state(current_input_data, joypad_info, @@ -731,7 +731,7 @@ uint64_t input_menu_keys_pressed( #ifdef HAVE_MENU { - const struct retro_keybind *mtkey = input_config_get_specific_bind(0, RARCH_MENU_TOGGLE); + const struct retro_keybind *mtkey = &input_config_binds[0][RARCH_MENU_TOGGLE]; if ( ((settings->input.menu_toggle_gamepad_combo != INPUT_TOGGLE_NONE) && input_driver_toggle_button_combo( settings->input.menu_toggle_gamepad_combo, &old_input)) @@ -745,8 +745,7 @@ uint64_t input_menu_keys_pressed( for (i = 0; i < RARCH_BIND_LIST_END; i++) { - const struct retro_keybind *mtkey = - input_config_get_specific_bind(0, i); + const struct retro_keybind *mtkey = &input_config_binds[0][i]; if (i != RARCH_MENU_TOGGLE && input_menu_keys_pressed_internal(binds, settings, joypad_info, i, max_users, @@ -758,17 +757,15 @@ uint64_t input_menu_keys_pressed( for (i = 0; i < max_users; i++) { - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *auto_binds = input_autoconf_binds[i]; input_pop_analog_dpad(auto_binds); } if (!menu_input_dialog_get_display_kb()) { unsigned ids[13][2]; - const struct retro_keybind *quitkey = - input_config_get_specific_bind(0, RARCH_QUIT_KEY); - const struct retro_keybind *fskey = - input_config_get_specific_bind(0, RARCH_FULLSCREEN_TOGGLE_KEY); + const struct retro_keybind *quitkey = &input_config_binds[0][RARCH_QUIT_KEY]; + const struct retro_keybind *fskey = &input_config_binds[0][RARCH_FULLSCREEN_TOGGLE_KEY]; ids[0][0] = RETROK_SPACE; ids[0][1] = RETRO_DEVICE_ID_JOYPAD_START; @@ -848,7 +845,7 @@ static INLINE bool input_keys_pressed_internal( bool bind_valid = binds[i].valid; joypad_info.joy_idx = settings->input.joypad_map[0]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; joypad_info.axis_threshold = settings->input.axis_threshold; if (bind_valid && current_input->input_state(current_input_data, @@ -915,13 +912,13 @@ uint64_t input_keys_pressed( rarch_joypad_info_t joypad_info; uint64_t ret = 0; settings_t *settings = config_get_ptr(); - const struct retro_keybind *binds = input_config_get_binds(0); + const struct retro_keybind *binds = input_config_binds[0]; const struct retro_keybind *binds_auto = input_autoconfigure_get_specific_bind(0, RARCH_ENABLE_HOTKEY); const struct retro_keybind *binds_norm = &binds[RARCH_ENABLE_HOTKEY]; const struct retro_keybind *focus_binds_auto = input_autoconfigure_get_specific_bind(0, RARCH_GAME_FOCUS_TOGGLE); const struct retro_keybind *focus_normal = &binds[RARCH_GAME_FOCUS_TOGGLE]; - const struct retro_keybind *enable_hotkey = input_config_get_specific_bind(0, RARCH_ENABLE_HOTKEY); + const struct retro_keybind *enable_hotkey = &input_config_binds[0][RARCH_ENABLE_HOTKEY]; bool game_focus_toggle_valid = false; joypad_info.joy_idx = 0; @@ -938,7 +935,7 @@ uint64_t input_keys_pressed( if (check_input_driver_block_hotkey(binds_norm, binds_auto)) { joypad_info.joy_idx = settings->input.joypad_map[0]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; if ( enable_hotkey->valid && current_input->input_state( current_input_data, joypad_info, &binds, 0, @@ -956,7 +953,7 @@ uint64_t input_keys_pressed( focus_normal, focus_binds_auto) && game_focus_toggle_valid) { joypad_info.joy_idx = settings->input.joypad_map[0]; - joypad_info.auto_binds = input_autoconfigure_get_binds(joypad_info.joy_idx); + joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; if (current_input->input_state(current_input_data, joypad_info, &binds, 0, RETRO_DEVICE_JOYPAD, 0, RARCH_GAME_FOCUS_TOGGLE)) input_driver_block_hotkey = false; @@ -1026,7 +1023,7 @@ bool input_driver_init(void) settings_t *settings = config_get_ptr(); for (i = 0; i < MAX_USERS; i++) - libretro_input_binds[i] = input_config_get_binds(i); + libretro_input_binds[i] = input_config_binds[i]; if (current_input) current_input_data = current_input->init(settings->input.joypad_driver); diff --git a/runloop.c b/runloop.c index 9728d9d949..3491886d9a 100644 --- a/runloop.c +++ b/runloop.c @@ -1141,8 +1141,8 @@ int runloop_iterate(unsigned *sleep_ms) /* Update binds for analog dpad modes. */ for (i = 0; i < settings->input.max_users; i++) { - struct retro_keybind *general_binds = input_config_get_binds(i); - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *general_binds = input_config_binds[i]; + struct retro_keybind *auto_binds = input_autoconf_binds[i]; enum analog_dpad_mode dpad_mode = (enum analog_dpad_mode)settings->input.analog_dpad_mode[i]; if (dpad_mode == ANALOG_DPAD_NONE) @@ -1164,8 +1164,8 @@ int runloop_iterate(unsigned *sleep_ms) for (i = 0; i < settings->input.max_users; i++) { - struct retro_keybind *general_binds = input_config_get_binds(i); - struct retro_keybind *auto_binds = input_autoconfigure_get_binds(i); + struct retro_keybind *general_binds = input_config_binds[i]; + struct retro_keybind *auto_binds = input_autoconf_binds[i]; enum analog_dpad_mode dpad_mode = (enum analog_dpad_mode)settings->input.analog_dpad_mode[i]; if (dpad_mode == ANALOG_DPAD_NONE) diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index ae8e1e2520..692d35a7f2 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -51,7 +51,6 @@ typedef struct autoconfig_params } autoconfig_params_t; static bool input_autoconfigured[MAX_USERS]; -static struct retro_keybind input_autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; static unsigned input_device_name_index[MAX_USERS]; /* Adds an index for devices with the same name, @@ -395,16 +394,6 @@ error: return false; } -const struct retro_keybind *input_autoconfigure_get_specific_bind(unsigned i, unsigned j) -{ - return &input_autoconf_binds[i][j]; -} - -struct retro_keybind *input_autoconfigure_get_binds(unsigned i) -{ - return input_autoconf_binds[i]; -} - void input_autoconfigure_reset(void) { unsigned i, j; diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index b165a93eef..48a15930eb 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -221,11 +221,6 @@ void path_init_savefile_new(void); bool input_is_autoconfigured(unsigned i); -const struct retro_keybind * -input_autoconfigure_get_specific_bind(unsigned i, unsigned j); - -struct retro_keybind *input_autoconfigure_get_binds(unsigned i); - unsigned input_autoconfigure_get_device_name_index(unsigned i); void input_autoconfigure_reset(void);