From 0674613d28d627b6dbc4feb5cc20799760f27814 Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Wed, 10 May 2023 08:36:44 +0200 Subject: [PATCH] Change return types of menu_driver_list_get_selection/get_size and simplify struct --- menu/cbs/menu_cbs_left.c | 24 +++++++++++------------- menu/cbs/menu_cbs_right.c | 27 +++++++++------------------ menu/menu_displaylist.c | 18 ++++++------------ menu/menu_driver.c | 31 ++++++++++--------------------- menu/menu_driver.h | 6 +++--- menu/menu_entries.h | 2 -- menu/menu_explore.c | 16 +++++++--------- tasks/task_menu_explore.c | 9 +++++---- 8 files changed, 51 insertions(+), 82 deletions(-) diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index c768aa37ad..c4ee687b4a 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -270,26 +270,23 @@ static int action_left_goto_tab(void) static int action_left_mainmenu(unsigned type, const char *label, bool wraparound) { - menu_ctx_list_t list_info; settings_t *settings = config_get_ptr(); bool menu_nav_wraparound_enable = settings->bools.menu_navigation_wraparound_enable; const char *menu_ident = menu_driver_ident(); + size_t selection = menu_driver_list_get_selection(); + size_t size = menu_driver_list_get_size(MENU_LIST_PLAIN); - menu_driver_list_get_selection(&list_info); - - list_info.type = MENU_LIST_PLAIN; - - menu_driver_list_get_size(&list_info); - +#ifdef HAVE_XMB /* Tab switching functionality only applies * to XMB */ - if ( (list_info.size == 1) + if ( (size == 1) && string_is_equal(menu_ident, "xmb")) { - if ((list_info.selection != 0) || menu_nav_wraparound_enable) + if ((selection != 0) || menu_nav_wraparound_enable) return action_left_goto_tab(); } else +#endif action_left_scroll(0, "", false); return 0; @@ -358,11 +355,12 @@ static int action_left_shader_filter_default(unsigned type, const char *label, static int action_left_cheat_num_passes(unsigned type, const char *label, bool wraparound) { - bool refresh = false; - unsigned new_size = 0; + bool refresh = false; + unsigned new_size = 0; + unsigned cheat_size = cheat_manager_get_size(); - if (cheat_manager_get_size()) - new_size = cheat_manager_get_size() - 1; + if (cheat_size) + new_size = cheat_size - 1; menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index e4e7f85292..5938606891 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -303,36 +303,27 @@ static int action_right_goto_tab(void) static int action_right_mainmenu(unsigned type, const char *label, bool wraparound) { - menu_ctx_list_t list_info; settings_t *settings = config_get_ptr(); bool menu_nav_wraparound_enable = settings->bools.menu_navigation_wraparound_enable; const char *menu_ident = menu_driver_ident(); + size_t selection = menu_driver_list_get_selection(); + size_t size = menu_driver_list_get_size(MENU_LIST_PLAIN); - menu_driver_list_get_selection(&list_info); - - list_info.type = MENU_LIST_PLAIN; - - menu_driver_list_get_size(&list_info); - +#ifdef HAVE_XMB /* Tab switching functionality only applies * to XMB */ - if ((list_info.size == 1) && - string_is_equal(menu_ident, "xmb")) + if ( (size == 1) + && string_is_equal(menu_ident, "xmb")) { - menu_ctx_list_t list_horiz_info; - menu_ctx_list_t list_tabs_info; + size_t horiz_size = menu_driver_list_get_size(MENU_LIST_HORIZONTAL); + size_t tabs_size = menu_driver_list_get_size(MENU_LIST_TABS); - list_horiz_info.type = MENU_LIST_HORIZONTAL; - list_tabs_info.type = MENU_LIST_TABS; - - menu_driver_list_get_size(&list_horiz_info); - menu_driver_list_get_size(&list_tabs_info); - - if ((list_info.selection != (list_horiz_info.size + list_tabs_info.size)) + if ( (selection != (horiz_size + tabs_size)) || menu_nav_wraparound_enable) return action_right_goto_tab(); } else +#endif action_right_scroll(0, "", false); return 0; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c9ef878b38..5228c6a276 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3331,22 +3331,16 @@ static void menu_displaylist_set_new_playlist( } static int menu_displaylist_parse_horizontal_list( - menu_handle_t *menu, - settings_t *settings, + menu_handle_t *menu, settings_t *settings, menu_displaylist_info_t *info) { - menu_ctx_list_t list_info; menu_ctx_list_t list_horiz_info; - struct item_file *item = NULL; + struct item_file *item = NULL; + size_t selection = menu_driver_list_get_selection(); + size_t size = menu_driver_list_get_size(MENU_LIST_TABS); - menu_driver_list_get_selection(&list_info); - - list_info.type = MENU_LIST_TABS; - - menu_driver_list_get_size(&list_info); - - list_horiz_info.type = MENU_LIST_HORIZONTAL; - list_horiz_info.idx = list_info.selection - (list_info.size +1); + list_horiz_info.type = MENU_LIST_HORIZONTAL; + list_horiz_info.idx = selection - (size +1); menu_driver_list_get_entry(&list_horiz_info); diff --git a/menu/menu_driver.c b/menu/menu_driver.c index d4f1cf50b0..5a63e91007 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -4561,33 +4561,22 @@ bool menu_driver_list_get_entry(menu_ctx_list_t *list) return true; } -bool menu_driver_list_get_selection(menu_ctx_list_t *list) +size_t menu_driver_list_get_selection(void) { - struct menu_state *menu_st = &menu_driver_state; + struct menu_state *menu_st = &menu_driver_state; if ( !menu_st->driver_ctx || !menu_st->driver_ctx->list_get_selection) - { - list->selection = 0; - return false; - } - list->selection = menu_st->driver_ctx->list_get_selection( - menu_st->userdata); - - return true; + return 0; + return menu_st->driver_ctx->list_get_selection(menu_st->userdata); } -bool menu_driver_list_get_size(menu_ctx_list_t *list) +size_t menu_driver_list_get_size(enum menu_list_type type) { - struct menu_state *menu_st = &menu_driver_state; - if ( !menu_st->driver_ctx || - !menu_st->driver_ctx->list_get_size) - { - list->size = 0; - return false; - } - list->size = menu_st->driver_ctx->list_get_size( - menu_st->userdata, list->type); - return true; + struct menu_state *menu_st = &menu_driver_state; + if ( !menu_st->driver_ctx + || !menu_st->driver_ctx->list_get_size) + return 0; + return menu_st->driver_ctx->list_get_size(menu_st->userdata, type); } void menu_input_get_pointer_state(menu_input_pointer_t *copy_target) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 6b6375b25a..2fa29ead64 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -622,12 +622,12 @@ bool menu_driver_list_cache(menu_ctx_list_t *list); bool menu_driver_init(bool video_is_threaded); -bool menu_driver_list_get_selection(menu_ctx_list_t *list); +size_t menu_driver_list_get_selection(void); + +size_t menu_driver_list_get_size(enum menu_list_type type); bool menu_driver_list_get_entry(menu_ctx_list_t *list); -bool menu_driver_list_get_size(menu_ctx_list_t *list); - retro_time_t menu_driver_get_current_time(void); void menu_display_timedate(gfx_display_ctx_datetime_t *datetime); diff --git a/menu/menu_entries.h b/menu/menu_entries.h index e753ebc1aa..74e54c924b 100644 --- a/menu/menu_entries.h +++ b/menu/menu_entries.h @@ -82,8 +82,6 @@ typedef struct menu_ctx_list file_list_t *list; void *entry; size_t idx; - size_t selection; - size_t size; size_t list_size; unsigned entry_type; unsigned action; diff --git a/menu/menu_explore.c b/menu/menu_explore.c index 1aff4e2e10..9e7de792b6 100644 --- a/menu/menu_explore.c +++ b/menu/menu_explore.c @@ -1001,26 +1001,24 @@ static const char* explore_get_view_path(void) /* check if we are opening a saved view from the horizontal/tabs menu */ if (cur->type == MENU_SETTING_HORIZONTAL_MENU) { - menu_ctx_list_t tabs, horizontal; - tabs.type = MENU_LIST_TABS; - if (menu_driver_list_get_selection(&tabs) && menu_driver_list_get_size(&tabs)) + size_t selection, size; + selection = menu_driver_list_get_selection(); + size = menu_driver_list_get_size(MENU_LIST_TABS); + if (selection > 0 && size > 0) { + menu_ctx_list_t horizontal; horizontal.type = MENU_LIST_HORIZONTAL; - horizontal.idx = tabs.selection - (tabs.size + 1); + horizontal.idx = selection - (size + 1); + /* Label contains the path and path contains the label */ if (menu_driver_list_get_entry(&horizontal)) - { - /* label contains the path and path contains the label */ return ((struct item_file*)horizontal.entry)->label; - } } } /* check if we are opening a saved view via Content > Playlists */ if (cur->type == MENU_EXPLORE_TAB && cur->path && !string_is_equal(cur->path, msg_hash_to_str(MENU_ENUM_LABEL_GOTO_EXPLORE))) - { return cur->path; - } return NULL; } diff --git a/tasks/task_menu_explore.c b/tasks/task_menu_explore.c index fda8373aad..46491c4eb2 100644 --- a/tasks/task_menu_explore.c +++ b/tasks/task_menu_explore.c @@ -93,12 +93,13 @@ static void cb_task_menu_explore_init( /* check if we are opening a saved view from the horizontal/tabs menu */ if (menu_type == MENU_SETTING_HORIZONTAL_MENU) { - menu_ctx_list_t tabs, horizontal; - tabs.type = MENU_LIST_TABS; - if (menu_driver_list_get_selection(&tabs) && menu_driver_list_get_size(&tabs)) + size_t selection = menu_driver_list_get_selection(); + size_t size = menu_driver_list_get_size(MENU_LIST_TABS); + if (selection > 0 && size > 0) { + menu_ctx_list_t horizontal; horizontal.type = MENU_LIST_HORIZONTAL; - horizontal.idx = tabs.selection - (tabs.size + 1); + horizontal.idx = selection - (size + 1); if (menu_driver_list_get_entry(&horizontal)) menu_type = ((struct item_file*)horizontal.entry)->type; }