diff --git a/menu/menu_input.c b/menu/menu_input.c index 6a498d002b..c85c73813d 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -115,9 +115,6 @@ typedef struct menu_input struct { - const char **buffer; - const char *label; - char label_setting[256]; bool display; unsigned type; unsigned idx; @@ -642,8 +639,11 @@ static bool menu_input_key_bind_iterate(char *s, size_t len) bool menu_input_ctl(enum menu_input_ctl_state state, void *data) { + static char menu_input_keyboard_label_setting[256]; menu_input_t *menu_input = menu_input_get_ptr(); menu_handle_t *menu = NULL; + static const char *menu_input_keyboard_label = NULL; + static const char **menu_input_keyboard_buffer; if (!menu_input) return false; @@ -686,8 +686,8 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data) return false; menu_input->keyboard.display = true; - menu_input->keyboard.label = menu_hash_to_str(MENU_VALUE_SEARCH); - menu_input->keyboard.buffer = + menu_input_keyboard_label = menu_hash_to_str(MENU_VALUE_SEARCH); + menu_input_keyboard_buffer = input_keyboard_start_line(menu, menu_input_search_cb); break; case MENU_INPUT_CTL_MOUSE_PTR: @@ -735,39 +735,39 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data) case MENU_INPUT_CTL_KEYBOARD_BUFF_PTR: { const char **ptr = (const char**)data; - *ptr = *menu_input->keyboard.buffer; + *ptr = *menu_input_keyboard_buffer; } break; case MENU_INPUT_CTL_KEYBOARD_LABEL: { const char **ptr = (const char**)data; - *ptr = menu_input->keyboard.label; + *ptr = menu_input_keyboard_label; } break; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL: { char **ptr = (char**)data; - menu_input->keyboard.label = *ptr; + menu_input_keyboard_label = *ptr; } break; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL: - menu_input->keyboard.label = NULL; + menu_input_keyboard_label = NULL; break; case MENU_INPUT_CTL_KEYBOARD_LABEL_SETTING: { const char **ptr = (const char**)data; - *ptr = menu_input->keyboard.label_setting; + *ptr = menu_input_keyboard_label_setting; } break; case MENU_INPUT_CTL_SET_KEYBOARD_LABEL_SETTING: { char **ptr = (char**)data; - strlcpy(menu_input->keyboard.label_setting, - *ptr, sizeof(menu_input->keyboard.label_setting)); + strlcpy(menu_input_keyboard_label_setting, + *ptr, sizeof(menu_input_keyboard_label_setting)); } break; case MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING: - menu_input->keyboard.label_setting[0] = '\0'; + menu_input_keyboard_label_setting[0] = '\0'; break; case MENU_INPUT_CTL_BIND_NONE: case MENU_INPUT_CTL_BIND_SINGLE: @@ -800,7 +800,7 @@ bool menu_input_ctl(enum menu_input_ctl_state state, void *data) menu_input->keyboard.type = line->type; menu_input->keyboard.idx = line->idx; - menu_input->keyboard.buffer = + menu_input_keyboard_buffer = input_keyboard_start_line(menu, line->cb); } break;