From a9b811410916f031830a45527c160054e6631129 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 15 Sep 2016 20:45:00 +0200 Subject: [PATCH] Reafctor input_bind_dialog code --- menu/drivers/menu_generic.c | 2 +- menu/menu_input.c | 7 ------- menu/menu_input.h | 3 +-- menu/widgets/menu_input_bind_dialog.c | 9 ++++++--- menu/widgets/menu_input_bind_dialog.h | 2 +- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index 1ae66039a6..a103664149 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -137,7 +137,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action) bind.s = menu->menu_state.msg; bind.len = sizeof(menu->menu_state.msg); - if (menu_input_ctl(MENU_INPUT_CTL_BIND_ITERATE, &bind)) + if (menu_input_key_bind_iterate(&bind)) { menu_entries_pop_stack(&selection, 0, 0); menu_navigation_ctl( diff --git a/menu/menu_input.c b/menu/menu_input.c index 9726b5134b..cbe18a3152 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -202,13 +202,6 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data) case MENU_INPUT_CTL_BIND_SINGLE: case MENU_INPUT_CTL_BIND_ALL: return menu_input_key_bind_set_mode(state, data); - case MENU_INPUT_CTL_BIND_ITERATE: - { - menu_input_ctx_bind_t *bind = (menu_input_ctx_bind_t*)data; - if (!bind) - return false; - return menu_input_key_bind_iterate(bind->s, bind->len); - } default: case MENU_INPUT_CTL_NONE: break; diff --git a/menu/menu_input.h b/menu/menu_input.h index 5f04b382e9..1e900b8da9 100644 --- a/menu/menu_input.h +++ b/menu/menu_input.h @@ -79,8 +79,7 @@ enum menu_input_ctl_state MENU_INPUT_CTL_DEINIT, MENU_INPUT_CTL_BIND_NONE, MENU_INPUT_CTL_BIND_SINGLE, - MENU_INPUT_CTL_BIND_ALL, - MENU_INPUT_CTL_BIND_ITERATE + MENU_INPUT_CTL_BIND_ALL }; typedef struct menu_input_ctx_hitbox diff --git a/menu/widgets/menu_input_bind_dialog.c b/menu/widgets/menu_input_bind_dialog.c index 9630807bba..9fbaf14d03 100644 --- a/menu/widgets/menu_input_bind_dialog.c +++ b/menu/widgets/menu_input_bind_dialog.c @@ -383,7 +383,7 @@ bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim) return true; } -bool menu_input_key_bind_iterate(char *s, size_t len) +bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind) { struct menu_bind_state binds; bool timed_out = false; @@ -392,6 +392,9 @@ bool menu_input_key_bind_iterate(char *s, size_t len) int timeout = (menu_input_binds.timeout_end - current) / 1000000; + if (!bind) + return false; + if (timeout <= 0) { input_driver_keyboard_mapping_set_block(false); @@ -403,10 +406,10 @@ bool menu_input_key_bind_iterate(char *s, size_t len) timed_out = true; } - snprintf(s, len, + snprintf(bind->s, bind->len, "[%s]\npress keyboard or joypad\n(timeout %d %s)", input_config_bind_map_get_desc( - menu_input_binds.begin - MENU_SETTINGS_BIND_BEGIN), + menu_input_binds.begin - MENU_SETTINGS_BIND_BEGIN), timeout, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SECONDS)); diff --git a/menu/widgets/menu_input_bind_dialog.h b/menu/widgets/menu_input_bind_dialog.h index 607ad29f65..30e10f2545 100644 --- a/menu/widgets/menu_input_bind_dialog.h +++ b/menu/widgets/menu_input_bind_dialog.h @@ -45,7 +45,7 @@ bool menu_input_key_bind_set_mode( bool menu_input_key_bind_set_min_max(menu_input_ctx_bind_limits_t *lim); -bool menu_input_key_bind_iterate(char *s, size_t len); +bool menu_input_key_bind_iterate(menu_input_ctx_bind_t *bind); RETRO_END_DECLS