From 4e883c4568e70d2ff357c8f717d847e105759c34 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Mar 2021 06:11:57 +0100 Subject: [PATCH] Refactor menu_displaylist_setting away --- menu/drivers/materialui.c | 139 ++++++++++++++++++++++----------- menu/drivers/ozone/ozone.c | 153 +++++++++++++++++++++++++------------ menu/drivers/stripes.c | 113 +++++++++++++++++++-------- menu/drivers/xmb.c | 153 +++++++++++++++++++++++++------------ menu/menu_displaylist.c | 17 +---- menu/menu_displaylist.h | 15 +++- 6 files changed, 399 insertions(+), 191 deletions(-) diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 3665889b47..ed34b310d0 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -8833,7 +8833,6 @@ static int materialui_menu_entry_action( static int materialui_list_push(void *data, void *userdata, menu_displaylist_info_t *info, unsigned type) { - menu_displaylist_ctx_parse_entry_t entry; int ret = -1; core_info_list_t *list = NULL; menu_handle_t *menu = (menu_handle_t*)data; @@ -8893,25 +8892,26 @@ static int materialui_list_push(void *data, void *userdata, menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - entry.data = menu; - entry.info = info; - entry.parse_type = PARSE_ACTION; - entry.add_empty_entry = false; - if (rarch_ctl(RARCH_CTL_CORE_IS_RUNNING, NULL)) { if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONTENT_SETTINGS, + PARSE_ACTION, + false); } } else { if (system->load_no_content) { - entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_START_CORE, + PARSE_ACTION, + false); } #ifndef HAVE_DYNAMIC @@ -8920,107 +8920,158 @@ static int materialui_list_push(void *data, void *userdata, { if (settings->bools.menu_show_load_core) { - entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CORE_LIST, + PARSE_ACTION, + false); } } } if (settings->bools.menu_show_load_content) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + PARSE_ACTION, + false); if (menu_displaylist_has_subsystems()) { - entry.enum_idx = MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS, + PARSE_ACTION, + false); } } if (settings->bools.menu_content_show_history) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS, + PARSE_ACTION, + false); } if (settings->bools.menu_show_load_disc) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_DISC, + PARSE_ACTION, + false); } if (settings->bools.menu_show_dump_disc) { - entry.enum_idx = MENU_ENUM_LABEL_DUMP_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_DUMP_DISC, + PARSE_ACTION, + false); } #if defined(HAVE_NETWORKING) #ifdef HAVE_LAKKA - entry.enum_idx = MENU_ENUM_LABEL_UPDATE_LAKKA; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_UPDATE_LAKKA, + PARSE_ACTION, + false); #else #ifdef HAVE_ONLINE_UPDATER if (settings->bools.menu_show_online_updater) { - entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ONLINE_UPDATER, + PARSE_ACTION, + false); } #endif #endif if (settings->uints.menu_content_show_add_entry == MENU_ADD_CONTENT_ENTRY_DISPLAY_MAIN_TAB) { - entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ADD_CONTENT_LIST, + PARSE_ACTION, + false); } if (settings->bools.menu_content_show_netplay) { - entry.enum_idx = MENU_ENUM_LABEL_NETPLAY; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_NETPLAY, + PARSE_ACTION, + false); } #endif if (settings->bools.menu_show_information) { - entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_INFORMATION_LIST, + PARSE_ACTION, + false); } if (settings->bools.menu_show_configurations) { - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + PARSE_ACTION, + false); } if (settings->bools.menu_show_help) { - entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_HELP_LIST, + PARSE_ACTION, + false); } #if !defined(IOS) if (settings->bools.menu_show_restart_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_RESTART_RETROARCH, + PARSE_ACTION, + false); } - entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_QUIT_RETROARCH, + PARSE_ACTION, + false); #endif #if defined(HAVE_LAKKA) if (settings->bools.menu_show_reboot) { - entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_REBOOT, + PARSE_ACTION, + false); } if (settings->bools.menu_show_shutdown) { - entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHUTDOWN, + PARSE_ACTION, + false); } #endif info->need_push = true; diff --git a/menu/drivers/ozone/ozone.c b/menu/drivers/ozone/ozone.c index 904e3d131f..abc47437df 100644 --- a/menu/drivers/ozone/ozone.c +++ b/menu/drivers/ozone/ozone.c @@ -1420,7 +1420,6 @@ static void *ozone_list_get_entry(void *data, static int ozone_list_push(void *data, void *userdata, menu_displaylist_info_t *info, unsigned type) { - menu_displaylist_ctx_parse_entry_t entry; int ret = -1; core_info_list_t *list = NULL; menu_handle_t *menu = (menu_handle_t*)data; @@ -1484,25 +1483,26 @@ static int ozone_list_push(void *data, void *userdata, rarch_system_info_t *system = runloop_get_system_info(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - entry.data = menu; - entry.info = info; - entry.parse_type = PARSE_ACTION; - entry.add_empty_entry = false; - if (rarch_ctl(RARCH_CTL_CORE_IS_RUNNING, NULL)) { if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONTENT_SETTINGS, + PARSE_ACTION, + false); } } else { if (system->load_no_content) { - entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_START_CORE, + PARSE_ACTION, + false); } #ifndef HAVE_DYNAMIC @@ -1511,118 +1511,175 @@ static int ozone_list_push(void *data, void *userdata, { if (settings->bools.menu_show_load_core) { - entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CORE_LIST, + PARSE_ACTION, + false); } } } if (settings->bools.menu_show_load_content) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + PARSE_ACTION, + false); if (menu_displaylist_has_subsystems()) { - entry.enum_idx = MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS, + PARSE_ACTION, + false); } } if (settings->bools.menu_show_load_disc) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_DISC, + PARSE_ACTION, + false); } if (settings->bools.menu_show_dump_disc) { - entry.enum_idx = MENU_ENUM_LABEL_DUMP_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_DUMP_DISC, + PARSE_ACTION, + false); } - entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ADD_CONTENT_LIST, + PARSE_ACTION, + false); #ifdef HAVE_QT if (settings->bools.desktop_menu_enable) { - entry.enum_idx = MENU_ENUM_LABEL_SHOW_WIMP; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHOW_WIMP, + PARSE_ACTION, + false); } #endif #if defined(HAVE_NETWORKING) #if defined(HAVE_ONLINE_UPDATER) if (settings->bools.menu_show_online_updater && !settings->bools.kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ONLINE_UPDATER, + PARSE_ACTION, + false); } #endif #endif if (!settings->bools.menu_content_show_settings && !string_is_empty(settings->paths.menu_content_show_settings_password)) { - entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + PARSE_ACTION, + false); } if (settings->bools.kiosk_mode_enable && !string_is_empty(settings->paths.kiosk_mode_password)) { - entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, + PARSE_ACTION, + false); } if (settings->bools.menu_show_information) { - entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_INFORMATION_LIST, + PARSE_ACTION, + false); } #if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX) - entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SWITCH_CPU_PROFILE, + PARSE_ACTION, + false); #endif #ifdef HAVE_LAKKA_SWITCH - entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SWITCH_GPU_PROFILE, + PARSE_ACTION, + false); #endif if (settings->bools.menu_show_configurations && !settings->bools.kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + PARSE_ACTION, + false); } if (settings->bools.menu_show_help) { - entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_HELP_LIST, + PARSE_ACTION, + false); } #if !defined(IOS) if (settings->bools.menu_show_restart_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_RESTART_RETROARCH, + PARSE_ACTION, + false); } if (settings->bools.menu_show_quit_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_QUIT_RETROARCH, + PARSE_ACTION, + false); } #endif if (settings->bools.menu_show_reboot) { - entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_REBOOT, + PARSE_ACTION, + false); } if (settings->bools.menu_show_shutdown) { - entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHUTDOWN, + PARSE_ACTION, + false); } info->need_push = true; diff --git a/menu/drivers/stripes.c b/menu/drivers/stripes.c index 4f3a773765..29da18e83e 100644 --- a/menu/drivers/stripes.c +++ b/menu/drivers/stripes.c @@ -4120,7 +4120,6 @@ static int stripes_list_bind_init(menu_file_list_cbs_t *cbs, static int stripes_list_push(void *data, void *userdata, menu_displaylist_info_t *info, unsigned type) { - menu_displaylist_ctx_parse_entry_t entry; int ret = -1; int i = 0; core_info_list_t *list = NULL; @@ -4192,16 +4191,22 @@ static int stripes_list_push(void *data, void *userdata, { if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONTENT_SETTINGS, + PARSE_ACTION, + false); } } else { if (system->load_no_content) { - entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_START_CORE, + PARSE_ACTION, + false); } #ifndef HAVE_DYNAMIC @@ -4210,90 +4215,132 @@ static int stripes_list_push(void *data, void *userdata, { if (settings->bools.menu_show_load_core) { - entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CORE_LIST, + PARSE_ACTION, + false); } } } if (settings->bools.menu_show_load_content) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + PARSE_ACTION, + false); if (menu_displaylist_has_subsystems()) { - entry.enum_idx = MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS, + PARSE_ACTION, + false); } } - entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ADD_CONTENT_LIST, + PARSE_ACTION, + false); #if defined(HAVE_NETWORKING) { settings_t *settings = config_get_ptr(); if (settings->bools.menu_show_online_updater && !settings->bools.kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ONLINE_UPDATER, + PARSE_ACTION, + false); } } #endif if (!settings->bools.menu_content_show_settings && !string_is_empty(settings->paths.menu_content_show_settings_password)) { - entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + PARSE_ACTION, + false); } if (settings->bools.kiosk_mode_enable && !string_is_empty(settings->paths.kiosk_mode_password)) { - entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, + PARSE_ACTION, + false); } if (settings->bools.menu_show_information) { - entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_INFORMATION_LIST, + PARSE_ACTION, + false); } #ifndef HAVE_DYNAMIC if (settings->bools.menu_show_restart_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_RESTART_RETROARCH, + PARSE_ACTION, + false); } #endif if (settings->bools.menu_show_configurations && !settings->bools.kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + PARSE_ACTION, + false); } if (settings->bools.menu_show_help) { - entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_HELP_LIST, + PARSE_ACTION, + false); } #if !defined(IOS) if (settings->bools.menu_show_quit_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_QUIT_RETROARCH, + PARSE_ACTION, + false); } #endif if (settings->bools.menu_show_reboot) { - entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_REBOOT, + PARSE_ACTION, + false); } - entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHUTDOWN, + PARSE_ACTION, + false); info->need_push = true; ret = 0; } diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index eb626d14f8..48f4982004 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -6659,7 +6659,6 @@ static int xmb_list_bind_init(menu_file_list_cbs_t *cbs, static int xmb_list_push(void *data, void *userdata, menu_displaylist_info_t *info, unsigned type) { - menu_displaylist_ctx_parse_entry_t entry; int ret = -1; core_info_list_t *list = NULL; menu_handle_t *menu = (menu_handle_t*)data; @@ -6738,25 +6737,26 @@ static int xmb_list_push(void *data, void *userdata, rarch_system_info_t *system = runloop_get_system_info(); menu_entries_ctl(MENU_ENTRIES_CTL_CLEAR, info->list); - entry.data = menu; - entry.info = info; - entry.parse_type = PARSE_ACTION; - entry.add_empty_entry = false; - if (rarch_ctl(RARCH_CTL_CORE_IS_RUNNING, NULL)) { if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { - entry.enum_idx = MENU_ENUM_LABEL_CONTENT_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONTENT_SETTINGS, + PARSE_ACTION, + false); } } else { if (system->load_no_content) { - entry.enum_idx = MENU_ENUM_LABEL_START_CORE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_START_CORE, + PARSE_ACTION, + false); } #ifndef HAVE_DYNAMIC @@ -6765,118 +6765,175 @@ static int xmb_list_push(void *data, void *userdata, { if (menu_show_load_core) { - entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CORE_LIST, + PARSE_ACTION, + false); } } } if (menu_show_load_content) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_CONTENT_LIST, + PARSE_ACTION, + false); if (menu_displaylist_has_subsystems()) { - entry.enum_idx = MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SUBSYSTEM_SETTINGS, + PARSE_ACTION, + false); } } if (menu_show_load_disc) { - entry.enum_idx = MENU_ENUM_LABEL_LOAD_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_LOAD_DISC, + PARSE_ACTION, + false); } if (menu_show_dump_disc) { - entry.enum_idx = MENU_ENUM_LABEL_DUMP_DISC; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_DUMP_DISC, + PARSE_ACTION, + false); } - entry.enum_idx = MENU_ENUM_LABEL_ADD_CONTENT_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ADD_CONTENT_LIST, + PARSE_ACTION, + false); #ifdef HAVE_QT if (desktop_menu_enable) { - entry.enum_idx = MENU_ENUM_LABEL_SHOW_WIMP; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHOW_WIMP, + PARSE_ACTION, + false); } #endif #if defined(HAVE_NETWORKING) #if defined(HAVE_ONLINE_UPDATER) if (menu_show_online_updater && !kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_ONLINE_UPDATER; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_ONLINE_UPDATER, + PARSE_ACTION, + false); } #endif #endif if ( !menu_content_show_settings && !string_is_empty(menu_content_show_settings_password)) { - entry.enum_idx = MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_XMB_MAIN_MENU_ENABLE_SETTINGS, + PARSE_ACTION, + false); } if (kiosk_mode_enable && !string_is_empty(kiosk_mode_password)) { - entry.enum_idx = MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_MENU_DISABLE_KIOSK_MODE, + PARSE_ACTION, + false); } if (menu_show_information) { - entry.enum_idx = MENU_ENUM_LABEL_INFORMATION_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_INFORMATION_LIST, + PARSE_ACTION, + false); } #if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX) - entry.enum_idx = MENU_ENUM_LABEL_SWITCH_CPU_PROFILE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SWITCH_CPU_PROFILE, + PARSE_ACTION, + false); #endif #ifdef HAVE_LAKKA_SWITCH - entry.enum_idx = MENU_ENUM_LABEL_SWITCH_GPU_PROFILE; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SWITCH_GPU_PROFILE, + PARSE_ACTION, + false); #endif if (menu_show_configurations && !kiosk_mode_enable) { - entry.enum_idx = MENU_ENUM_LABEL_CONFIGURATIONS_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_CONFIGURATIONS_LIST, + PARSE_ACTION, + false); } if (menu_show_help) { - entry.enum_idx = MENU_ENUM_LABEL_HELP_LIST; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_HELP_LIST, + PARSE_ACTION, + false); } #if !defined(IOS) if (menu_show_restart_ra) { - entry.enum_idx = MENU_ENUM_LABEL_RESTART_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_RESTART_RETROARCH, + PARSE_ACTION, + false); } if (menu_show_quit_retroarch) { - entry.enum_idx = MENU_ENUM_LABEL_QUIT_RETROARCH; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_QUIT_RETROARCH, + PARSE_ACTION, + false); } #endif if (menu_show_reboot) { - entry.enum_idx = MENU_ENUM_LABEL_REBOOT; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_REBOOT, + PARSE_ACTION, + false); } if (menu_show_shutdown) { - entry.enum_idx = MENU_ENUM_LABEL_SHUTDOWN; - menu_displaylist_setting(&entry); + MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( + info->list, + MENU_ENUM_LABEL_SHUTDOWN, + PARSE_ACTION, + false); } info->need_push = true; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index ad4661c89f..ff5258315e 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -108,10 +108,6 @@ #include "../manual_content_scan.h" #include "../core_backup.h" -#define MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, label, parse_type, add_empty_entry) menu_displaylist_parse_settings_internal_enum(list, parse_type, add_empty_entry, menu_setting_find_enum(label), label, true) - -#define MENU_DISPLAYLIST_PARSE_SETTINGS(list, label, parse_type, add_empty_entry, entry_type) menu_displaylist_parse_settings_internal_enum(list, parse_type, add_empty_entry, menu_setting_find(label), entry_type, false) - /* Spacers used for ' - ' labels * in playlists */ #define PL_LABEL_SPACER_DEFAULT " | " @@ -2235,7 +2231,7 @@ error: } #endif -static int menu_displaylist_parse_settings_internal_enum( +int menu_displaylist_parse_settings_enum( file_list_t *info_list, enum menu_displaylist_parse_type parse_type, bool add_empty_entry, @@ -4797,17 +4793,6 @@ void menu_displaylist_info_init(menu_displaylist_info_t *info) info->setting = NULL; } -bool menu_displaylist_setting(menu_displaylist_ctx_parse_entry_t *entry) -{ - if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM( - entry->info->list, - entry->enum_idx, - entry->parse_type, - entry->add_empty_entry) == -1) - return false; - return true; -} - typedef struct menu_displaylist_build_info { enum msg_hash_enums enum_idx; enum menu_displaylist_parse_type parse_type; diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 168bcd4d1b..9fdc8f011f 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -320,6 +320,10 @@ typedef struct menu_displaylist_ctx_entry file_list_t *list; } menu_displaylist_ctx_entry_t; +#define MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, label, parse_type, add_empty_entry) menu_displaylist_parse_settings_enum(list, parse_type, add_empty_entry, menu_setting_find_enum(label), label, true) + +#define MENU_DISPLAYLIST_PARSE_SETTINGS(list, label, parse_type, add_empty_entry, entry_type) menu_displaylist_parse_settings_enum(list, parse_type, add_empty_entry, menu_setting_find(label), entry_type, false) + bool menu_displaylist_process(menu_displaylist_info_t *info); void menu_displaylist_info_free(menu_displaylist_info_t *info); @@ -330,8 +334,6 @@ void menu_displaylist_info_init(menu_displaylist_info_t *info); bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info); -bool menu_displaylist_setting(menu_displaylist_ctx_parse_entry_t *entry); - #ifdef HAVE_NETWORKING unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list); #endif @@ -348,6 +350,15 @@ void filebrowser_clear_type(void); void filebrowser_set_type(enum filebrowser_enums type); +int menu_displaylist_parse_settings_enum( + file_list_t *info_list, + enum menu_displaylist_parse_type parse_type, + bool add_empty_entry, + rarch_setting_t *setting, + unsigned entry_type, + bool is_enum + ); + RETRO_END_DECLS #endif