From 08f71a9b1e9ac3a19aafb555e502a17401334620 Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Tue, 9 May 2023 04:40:47 +0200 Subject: [PATCH] (Menu) Cleanups - make functions static and remove some unnecessary wrapper functions --- menu/cbs/menu_cbs_ok.c | 61 +++++++++++++++++++----- menu/menu_displaylist.c | 103 ++++++++++++++++++++++++---------------- menu/menu_driver.c | 96 ++++--------------------------------- menu/menu_driver.h | 12 ----- 4 files changed, 121 insertions(+), 151 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e8273817ed..416914df35 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -570,6 +570,40 @@ static void action_ok_get_file_browser_start_path( menu_driver_set_pending_selection(pending_selection); } +static const char *menu_driver_get_last_start_file_name(void) +{ + struct menu_state *menu_st = menu_state_get_ptr(); + menu_handle_t *menu = menu_st->driver_data; + settings_t *settings = config_get_ptr(); + bool use_last = settings->bools.use_last_start_directory; + /* Return NULL if there is no last 'file name' */ + if ( !menu + || !use_last + || string_is_empty(menu->last_start_content.file_name)) + return NULL; + return menu->last_start_content.file_name; +} + +static const char *menu_driver_get_last_start_directory(void) +{ + struct menu_state *menu_st = menu_state_get_ptr(); + menu_handle_t *menu = menu_st->driver_data; + settings_t *settings = config_get_ptr(); + bool use_last = settings->bools.use_last_start_directory; + const char *default_directory = settings->paths.directory_menu_content; + + /* Return default directory if there is no + * last directory or it's invalid */ + if ( !menu + || !use_last + || string_is_empty(menu->last_start_content.directory) + || !path_is_directory(menu->last_start_content.directory)) + return default_directory; + + return menu->last_start_content.directory; +} + + int generic_action_ok_displaylist_push(const char *path, const char *new_path, const char *label, unsigned type, size_t idx, size_t entry_idx, @@ -588,7 +622,7 @@ int generic_action_ok_displaylist_push(const char *path, menu_handle_t *menu = menu_st->driver_data; menu_list_t *menu_list = menu_st->entries.list; settings_t *settings = config_get_ptr(); - const char *menu_ident = menu_driver_ident(); + const char *menu_ident = (menu_st->driver_ctx && menu_st->driver_ctx->ident) ? menu_st->driver_ctx->ident : NULL; file_list_t *menu_stack = MENU_LIST_GET(menu_list, 0); #ifdef HAVE_AUDIOMIXER bool audio_enable_menu = settings->bools.audio_enable_menu; @@ -1099,9 +1133,9 @@ int generic_action_ok_displaylist_push(const char *path, settings->bools.use_last_start_directory) { info_path = menu_driver_get_last_start_directory(); - menu_driver_set_pending_selection(menu_driver_get_last_start_file_name()); + menu_driver_set_pending_selection( + menu_driver_get_last_start_file_name()); } - break; case ACTION_OK_DL_SCAN_DIR_LIST: filebrowser_set_type(FILEBROWSER_SCAN_DIR); @@ -1416,6 +1450,7 @@ int generic_action_ok_displaylist_push(const char *path, case ACTION_OK_DL_DATABASE_MANAGER_LIST: { char lpl_basename[PATH_MAX_LENGTH]; + struct menu_state *menu_st = menu_state_get_ptr(); filebrowser_clear_type(); fill_pathname_join_special(tmp, settings->paths.path_content_database, @@ -1423,7 +1458,10 @@ int generic_action_ok_displaylist_push(const char *path, fill_pathname_base(lpl_basename, path, sizeof(lpl_basename)); path_remove_extension(lpl_basename); - menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->set_thumbnail_system) + menu_st->driver_ctx->set_thumbnail_system( + menu_st->userdata, lpl_basename, sizeof(lpl_basename)); info.directory_ptr = idx; info_path = tmp; @@ -7857,18 +7895,19 @@ static int action_ok_pl_entry_content_thumbnails(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { char system[PATH_MAX_LENGTH]; - playlist_t *playlist = playlist_get_cached(); - menu_handle_t *menu = menu_state_get_ptr()->driver_data; + struct menu_state *menu_st = menu_state_get_ptr(); + playlist_t *playlist = playlist_get_cached(); + menu_handle_t *menu = menu_st->driver_data; system[0] = '\0'; - if (!playlist) + if (!playlist || !menu) return -1; - if (!menu) - return -1; - - menu_driver_get_thumbnail_system(system, sizeof(system)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->get_thumbnail_system) + menu_st->driver_ctx->get_thumbnail_system( + menu_st->userdata, system, sizeof(system)); task_push_pl_entry_thumbnail_download(system, playlist, menu->rpl_entry_selection_ptr, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index de96b58ab6..3ce1ea1c26 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -2182,6 +2182,7 @@ static int menu_displaylist_parse_playlist(file_list_t *info_list, char label_spacer[PL_LABEL_SPACER_MAXLEN]; size_t list_size = playlist_size(playlist); bool show_inline_core_name = false; + struct menu_state *menu_st = menu_state_get_ptr(); const char *menu_driver = menu_driver_ident(); menu_search_terms_t *search_terms = menu_entries_search_get_terms(); unsigned pl_show_inline_core_name = settings->uints.playlist_show_inline_core_name; @@ -2211,32 +2212,37 @@ static int menu_displaylist_parse_playlist(file_list_t *info_list, strlcpy(label_spacer, PL_LABEL_SPACER_DEFAULT, sizeof(label_spacer)); } - /* Inform menu driver of current system name - * > Note: history, favorites and images_history - * require special treatment here, since info_path - * is nonsensical in these cases (and we *do* need - * to call set_thumbnail_system() in these cases, - * since all three playlist types have thumbnail - * support) - * EDIT: For correct operation of the quick menu - * 'download thumbnails' option, we must also extend - * this to music_history and video_history */ - if ( + if (menu_st->driver_ctx && menu_st->driver_ctx->set_thumbnail_system) + { + /* Inform menu driver of current system name + * > Note: history, favorites and images_history + * require special treatment here, since info_path + * is nonsensical in these cases (and we *do* need + * to call set_thumbnail_system() in these cases, + * since all three playlist types have thumbnail + * support) + * EDIT: For correct operation of the quick menu + * 'download thumbnails' option, we must also extend + * this to music_history and video_history */ + if ( string_is_equal(path_playlist, "history") - || string_is_equal(path_playlist, "favorites") - || string_ends_with_size(path_playlist, "_history", - strlen(path_playlist), STRLEN_CONST("_history"))) - { - char system_name[15]; - strlcpy(system_name, path_playlist, sizeof(system_name)); - menu_driver_set_thumbnail_system(system_name, sizeof(system_name)); - } - else if (!string_is_empty(info_path)) - { - char lpl_basename[256]; - fill_pathname_base(lpl_basename, info_path, sizeof(lpl_basename)); - path_remove_extension(lpl_basename); - menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename)); + || string_is_equal(path_playlist, "favorites") + || string_ends_with_size(path_playlist, "_history", + strlen(path_playlist), STRLEN_CONST("_history"))) + { + char system_name[15]; + strlcpy(system_name, path_playlist, sizeof(system_name)); + menu_st->driver_ctx->set_thumbnail_system( + menu_st->userdata, system_name, sizeof(system_name)); + } + else if (!string_is_empty(info_path)) + { + char lpl_basename[256]; + fill_pathname_base(lpl_basename, info_path, sizeof(lpl_basename)); + path_remove_extension(lpl_basename); + menu_st->driver_ctx->set_thumbnail_system( + menu_st->userdata, lpl_basename, sizeof(lpl_basename)); + } } /* Preallocate the file list */ @@ -2483,6 +2489,7 @@ static int menu_displaylist_parse_database_entry(menu_handle_t *menu, playlist_config_t playlist_config; playlist_t *playlist = NULL; database_info_list_t *db_info = NULL; + struct menu_state *menu_st = menu_state_get_ptr(); bool show_advanced_settings = settings->bools.menu_show_advanced_settings; const char *dir_playlist = settings->paths.directory_playlist; @@ -2505,7 +2512,10 @@ static int menu_displaylist_parse_database_entry(menu_handle_t *menu, sizeof(path_base)); path_remove_extension(path_base); - menu_driver_set_thumbnail_system(path_base, sizeof(path_base)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->set_thumbnail_system) + menu_st->driver_ctx->set_thumbnail_system( + menu_st->userdata, path_base, sizeof(path_base)); strlcat(path_base, ".lpl", sizeof(path_base)); @@ -3348,6 +3358,7 @@ static int menu_displaylist_parse_horizontal_list( menu_displaylist_ctl(DISPLAYLIST_EXPLORE, info, settings); else { + struct menu_state *menu_st = menu_state_get_ptr(); playlist_t *playlist = NULL; if (!string_is_empty(item->path)) { @@ -3366,7 +3377,10 @@ static int menu_displaylist_parse_horizontal_list( * is loaded/cached */ fill_pathname_base(lpl_basename, item->path, sizeof(lpl_basename)); path_remove_extension(lpl_basename); - menu_driver_set_thumbnail_system(lpl_basename, sizeof(lpl_basename)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->set_thumbnail_system) + menu_st->driver_ctx->set_thumbnail_system( + menu_st->userdata, lpl_basename, sizeof(lpl_basename)); } if ((playlist = playlist_get_cached())) @@ -3832,9 +3846,13 @@ static int menu_displaylist_parse_horizontal_content_actions( case PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV: { char system[PATH_MAX_LENGTH]; + struct menu_state *menu_st = menu_state_get_ptr(); system[0] = '\0'; - menu_driver_get_thumbnail_system(system, sizeof(system)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->get_thumbnail_system) + menu_st->driver_ctx->get_thumbnail_system( + menu_st->userdata, system, sizeof(system)); if (!string_is_empty(system)) remove_entry_enabled = @@ -3905,12 +3923,15 @@ static int menu_displaylist_parse_horizontal_content_actions( if (download_enabled) { char system[PATH_MAX_LENGTH]; - + struct menu_state *menu_st = menu_state_get_ptr(); system[0] = '\0'; /* Only show 'Download Thumbnails' on supported playlists */ download_enabled = false; - menu_driver_get_thumbnail_system(system, sizeof(system)); + if ( menu_st->driver_ctx + && menu_st->driver_ctx->get_thumbnail_system) + menu_st->driver_ctx->get_thumbnail_system( + menu_st->userdata, system, sizeof(system)); if (!string_is_empty(system)) download_enabled = !string_ends_with_size( @@ -8753,14 +8774,16 @@ unsigned menu_displaylist_build_list( break; case DISPLAYLIST_USER_INTERFACE_SETTINGS_LIST: { - bool kiosk_mode_enable = settings->bools.kiosk_mode_enable; + bool kiosk_mode_enable = settings->bools.kiosk_mode_enable; #if defined(HAVE_QT) || defined(HAVE_COCOA) - bool desktop_menu_enable = settings->bools.desktop_menu_enable; + bool desktop_menu_enable = settings->bools.desktop_menu_enable; #endif - bool menu_screensaver_supported = menu_driver_screensaver_supported(); + struct menu_state *menu_st = menu_state_get_ptr(); + bool menu_screensaver_supported = ((menu_st->flags & MENU_ST_FLAG_SCREENSAVER_SUPPORTED) > 0); #if defined(HAVE_MATERIALUI) || defined(HAVE_XMB) || defined(HAVE_OZONE) enum menu_screensaver_effect menu_screensaver_animation = - (enum menu_screensaver_effect)settings->uints.menu_screensaver_animation; + (enum menu_screensaver_effect) + settings->uints.menu_screensaver_animation; #endif menu_displaylist_build_info_selective_t build_list[] = { @@ -11110,15 +11133,15 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info, settings_t *settings) { - menu_ctx_displaylist_t disp_list; + struct menu_state *menu_st = menu_state_get_ptr(); static bool core_selected = false; + bool push_list = (menu_st->driver_ctx->list_push + && menu_st->driver_ctx->list_push(menu_st->driver_data, + menu_st->userdata, info, type) == 0); - disp_list.info = info; - disp_list.type = type; - - if (!menu_driver_push_list(&disp_list)) + if (!push_list) { - menu_handle_t *menu = menu_state_get_ptr()->driver_data; + menu_handle_t *menu = menu_st->driver_data; bool load_content = true; bool use_filebrowser = false; unsigned count = 0; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index e9402fdd69..1d3a4d879a 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -4130,12 +4130,6 @@ int menu_driver_deferred_push_content_list(file_list_t *list) return 0; } -bool menu_driver_screensaver_supported(void) -{ - struct menu_state *menu_st = &menu_driver_state; - return ((menu_st->flags & MENU_ST_FLAG_SCREENSAVER_SUPPORTED) > 0); -} - retro_time_t menu_driver_get_current_time(void) { struct menu_state *menu_st = &menu_driver_state; @@ -4210,39 +4204,6 @@ end: menu_input_dialog_end(); } -const char *menu_driver_get_last_start_directory(void) -{ - menu_handle_t *menu = menu_driver_state.driver_data; - settings_t *settings = config_get_ptr(); - bool use_last = settings->bools.use_last_start_directory; - const char *default_directory = settings->paths.directory_menu_content; - - /* Return default directory if there is no - * last directory or it's invalid */ - if ( !menu - || !use_last - || string_is_empty(menu->last_start_content.directory) - || !path_is_directory(menu->last_start_content.directory)) - return default_directory; - - return menu->last_start_content.directory; -} - -const char *menu_driver_get_last_start_file_name(void) -{ - menu_handle_t *menu = menu_driver_state.driver_data; - settings_t *settings = config_get_ptr(); - bool use_last = settings->bools.use_last_start_directory; - - /* Return NULL if there is no last 'file name' */ - if (!menu || - !use_last || - string_is_empty(menu->last_start_content.file_name)) - return NULL; - - return menu->last_start_content.file_name; -} - void menu_driver_set_last_start_content(const char *start_content_path) { char archive_path[PATH_MAX_LENGTH]; @@ -4566,7 +4527,7 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data) { size_t *idx = (size_t*)data; if (!idx) - return 0; + return false; *idx = menu_st->entries.begin; } @@ -4676,45 +4637,6 @@ bool menu_driver_list_cache(menu_ctx_list_t *list) return true; } -bool menu_driver_push_list(menu_ctx_displaylist_t *disp_list) -{ - struct menu_state *menu_st = &menu_driver_state; - if (menu_st->driver_ctx->list_push) - if (menu_st->driver_ctx->list_push( - menu_st->driver_data, - menu_st->userdata, - disp_list->info, disp_list->type) == 0) - return true; - return false; -} - -void menu_driver_set_thumbnail_system(char *s, size_t len) -{ - struct menu_state *menu_st = &menu_driver_state; - if ( menu_st->driver_ctx - && menu_st->driver_ctx->set_thumbnail_system) - menu_st->driver_ctx->set_thumbnail_system( - menu_st->userdata, s, len); -} - -void menu_driver_get_thumbnail_system(char *s, size_t len) -{ - struct menu_state *menu_st = &menu_driver_state; - if ( menu_st->driver_ctx - && menu_st->driver_ctx->get_thumbnail_system) - menu_st->driver_ctx->get_thumbnail_system( - menu_st->userdata, s, len); -} - -void menu_driver_set_thumbnail_content(char *s, size_t len) -{ - struct menu_state *menu_st = &menu_driver_state; - if ( menu_st->driver_ctx - && menu_st->driver_ctx->set_thumbnail_content) - menu_st->driver_ctx->set_thumbnail_content( - menu_st->userdata, s); -} - /* Teardown function for the menu driver. */ void menu_driver_destroy( struct menu_state *menu_st) @@ -4954,12 +4876,11 @@ void menu_entries_get_core_title(char *s, size_t len) } static bool menu_driver_init_internal( + struct menu_state *menu_st, gfx_display_t *p_disp, settings_t *settings, bool video_is_threaded) { - struct menu_state *menu_st = &menu_driver_state;; - if (menu_st->driver_ctx) { const char *ident = menu_st->driver_ctx->ident; @@ -4968,9 +4889,9 @@ static bool menu_driver_init_internal( * parameters (and some menu drivers fetch the * current pixel/dpi scale during 'menu_driver_ctx->init()') */ if (ident) - p_disp->menu_driver_id = menu_driver_set_id(ident); + p_disp->menu_driver_id = menu_driver_set_id(ident); else - p_disp->menu_driver_id = MENU_DRIVER_ID_UNKNOWN; + p_disp->menu_driver_id = MENU_DRIVER_ID_UNKNOWN; if (menu_st->driver_ctx->init) { @@ -5027,10 +4948,9 @@ bool menu_driver_init(bool video_is_threaded) command_event(CMD_EVENT_CORE_INFO_INIT, NULL); command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL); - if ( menu_st->driver_data || - menu_driver_init_internal( - p_disp, - settings, + if ( menu_st->driver_data + || menu_driver_init_internal( + menu_st, p_disp, settings, video_is_threaded)) { if (menu_st->driver_ctx && menu_st->driver_ctx->context_reset) @@ -5256,7 +5176,7 @@ static bool menu_input_key_bind_iterate( /* Inhibits input for 2 frames * > Required, since input is ignored for 1 frame * after certain events - e.g. closing the OSK */ - menu_st->input_driver_flushing_input = 2; + menu_st->input_driver_flushing_input = 2; /* We won't be getting any key events, so just cancel early. */ if (timed_out) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 0517b100a5..e13ece1b2b 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -631,24 +631,14 @@ int menu_driver_deferred_push_content_list(file_list_t *list); bool menu_driver_list_cache(menu_ctx_list_t *list); -bool menu_driver_push_list(menu_ctx_displaylist_t *disp_list); - bool menu_driver_init(bool video_is_threaded); -void menu_driver_set_thumbnail_system(char *s, size_t len); - -void menu_driver_get_thumbnail_system(char *s, size_t len); - -void menu_driver_set_thumbnail_content(char *s, size_t len); - bool menu_driver_list_get_selection(menu_ctx_list_t *list); bool menu_driver_list_get_entry(menu_ctx_list_t *list); bool menu_driver_list_get_size(menu_ctx_list_t *list); -bool menu_driver_screensaver_supported(void); - retro_time_t menu_driver_get_current_time(void); void menu_display_timedate(gfx_display_ctx_datetime_t *datetime); @@ -723,8 +713,6 @@ void menu_driver_get_last_shader_pass_path( const char **directory, const char **file_name); #endif -const char *menu_driver_get_last_start_directory(void); -const char *menu_driver_get_last_start_file_name(void); void menu_driver_set_last_start_content(const char *start_content_path); void menu_driver_set_pending_selection(const char *pending_selection);