(menu_input_bind_dialog.c) Cleanups

This commit is contained in:
twinaphex 2020-06-23 17:13:46 +02:00
parent 459a7df778
commit d62bf9b16c

View File

@ -105,6 +105,7 @@ static int menu_input_key_bind_set_mode_common(
unsigned index_offset = setting->index_offset; unsigned index_offset = setting->index_offset;
file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0);
size_t selection = menu_navigation_get_selection(); size_t selection = menu_navigation_get_selection();
struct menu_bind_state *binds = &menu_input_binds;
menu_displaylist_info_init(&info); menu_displaylist_info_init(&info);
@ -118,11 +119,11 @@ static int menu_input_key_bind_set_mode_common(
bind_type = setting_get_bind_type(setting); bind_type = setting_get_bind_type(setting);
menu_input_binds.begin = bind_type; binds->begin = bind_type;
menu_input_binds.last = bind_type; binds->last = bind_type;
menu_input_binds.output = keybind; binds->output = keybind;
menu_input_binds.buffer = *(menu_input_binds.output); binds->buffer = *(binds->output);
menu_input_binds.user = index_offset; binds->user = index_offset;
info.list = menu_stack; info.list = menu_stack;
info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD; info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD;
@ -135,10 +136,10 @@ static int menu_input_key_bind_set_mode_common(
menu_displaylist_info_free(&info); menu_displaylist_info_free(&info);
break; break;
case MENU_INPUT_BINDS_CTL_BIND_ALL: case MENU_INPUT_BINDS_CTL_BIND_ALL:
menu_input_binds.output = &input_config_binds[index_offset][0]; binds->output = &input_config_binds[index_offset][0];
menu_input_binds.buffer = *(menu_input_binds.output); binds->buffer = *(binds->output);
menu_input_binds.begin = MENU_SETTINGS_BIND_BEGIN; binds->begin = MENU_SETTINGS_BIND_BEGIN;
menu_input_binds.last = MENU_SETTINGS_BIND_LAST; binds->last = MENU_SETTINGS_BIND_LAST;
info.list = menu_stack; info.list = menu_stack;
info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD; info.type = MENU_SETTINGS_CUSTOM_BIND_KEYBOARD;
@ -607,47 +608,47 @@ bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind,
} }
{ {
bool complete = false; bool complete = false;
struct menu_bind_state binds = menu_input_binds; struct menu_bind_state new_binds = *_binds;
input_driver_t *input_drv = input_get_ptr(); input_driver_t *input_drv = input_get_ptr();
if (input_drv) if (input_drv)
input_drv->keyboard_mapping_blocked = true; input_drv->keyboard_mapping_blocked = true;
menu_input_key_bind_poll_bind_state(&binds, timed_out); menu_input_key_bind_poll_bind_state(&new_binds, timed_out);
#ifdef ANDROID #ifdef ANDROID
/* Keep resetting bind during the hold period, /* Keep resetting bind during the hold period,
* or we'll potentially bind joystick and mouse, etc.*/ * or we'll potentially bind joystick and mouse, etc.*/
binds.buffer = *(binds.output); new_binds.buffer = *(new_binds.output);
if (menu_input_key_bind_poll_find_hold(&binds, &binds.buffer)) if (menu_input_key_bind_poll_find_hold(&new_binds, &new_binds.buffer))
{ {
/* Inhibit timeout*/ /* Inhibit timeout*/
rarch_timer_begin_new_time_us(&binds.timer_timeout, rarch_timer_begin_new_time_us(&new_binds.timer_timeout,
input_bind_timeout_us); input_bind_timeout_us);
/* Run hold timer*/ /* Run hold timer*/
rarch_timer_tick(&binds.timer_hold, current_time); rarch_timer_tick(&new_binds.timer_hold, current_time);
snprintf(bind->s, bind->len, snprintf(bind->s, bind->len,
"[%s]\npress keyboard, mouse or joypad\nand hold ...", "[%s]\npress keyboard, mouse or joypad\nand hold ...",
input_config_bind_map_get_desc( input_config_bind_map_get_desc(
menu_input_binds.begin - MENU_SETTINGS_BIND_BEGIN)); _binds->begin - MENU_SETTINGS_BIND_BEGIN));
/* Hold complete? */ /* Hold complete? */
if (rarch_timer_has_expired(&binds.timer_hold)) if (rarch_timer_has_expired(&new_binds.timer_hold))
complete = true; complete = true;
} }
else else
{ {
/* Reset hold countdown*/ /* Reset hold countdown*/
rarch_timer_begin_new_time_us(&binds.timer_hold, input_bind_hold_us); rarch_timer_begin_new_time_us(&new_binds.timer_hold, input_bind_hold_us);
} }
#else #else
if ((binds.skip && !menu_input_binds.skip) || if ((new_binds.skip && !_binds->skip) ||
menu_input_key_bind_poll_find_trigger( menu_input_key_bind_poll_find_trigger(
&menu_input_binds, &binds, &(binds.buffer))) _binds, &new_binds, &(new_binds.buffer)))
complete = true; complete = true;
#endif #endif
@ -656,7 +657,7 @@ bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind,
input_driver_t *input_drv = input_get_ptr(); input_driver_t *input_drv = input_get_ptr();
/* Update bind */ /* Update bind */
*(binds.output) = binds.buffer; *(new_binds.output) = new_binds.buffer;
if (input_drv) if (input_drv)
input_drv->keyboard_mapping_blocked = false; input_drv->keyboard_mapping_blocked = false;
@ -664,22 +665,22 @@ bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind,
/* Avoid new binds triggering things right away. */ /* Avoid new binds triggering things right away. */
input_driver_set_flushing_input(); input_driver_set_flushing_input();
binds.begin++; new_binds.begin++;
if (binds.begin > binds.last) if (new_binds.begin > new_binds.last)
{ {
input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS, NULL); input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_CANCEL_WAIT_KEYS, NULL);
return true; return true;
} }
/*next bind*/ /*next bind*/
binds.output++; new_binds.output++;
binds.buffer = *(binds.output); new_binds.buffer = *(new_binds.output);
rarch_timer_begin_new_time_us(&binds.timer_hold, input_bind_hold_us); rarch_timer_begin_new_time_us(&new_binds.timer_hold, input_bind_hold_us);
rarch_timer_begin_new_time_us(&binds.timer_timeout, input_bind_timeout_us); rarch_timer_begin_new_time_us(&new_binds.timer_timeout, input_bind_timeout_us);
} }
menu_input_binds = binds; *(_binds) = new_binds;
} }
/* Pointer input must be inhibited on each /* Pointer input must be inhibited on each