diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0cc9ebe9bb..f32709d473 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -849,6 +849,17 @@ static int menu_displaylist_parse_shader_options(menu_displaylist_info_t *info) return 0; } +static int menu_displaylist_parse_disk_options(menu_displaylist_info_t *info) +{ + menu_list_push(info->list, "Disk Index", "disk_idx", + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0); + menu_list_push(info->list, "Disk Cycle Tray Status", "disk_cycle_tray_status", + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0); + menu_list_push(info->list, "Disk Image Append", "disk_image_append", + MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, 0); + return 0; +} + int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) { int ret = 0; @@ -902,6 +913,13 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) 0, 0); #endif + need_push = true; + break; + case DISPLAYLIST_OPTIONS_DISK: + menu_list_clear(info->list); + + ret = menu_displaylist_parse_disk_options(info); + need_push = true; break; case DISPLAYLIST_OPTIONS_SHADERS: diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 85f6d2d463..146446cb8a 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -62,6 +62,7 @@ enum DISPLAYLIST_OVERLAYS, DISPLAYLIST_SHADER_PARAMETERS, DISPLAYLIST_SHADER_PARAMETERS_PRESET, + DISPLAYLIST_OPTIONS_DISK, DISPLAYLIST_OPTIONS_VIDEO, DISPLAYLIST_OPTIONS_SHADERS, }; diff --git a/menu/menu_entries_cbs_deferred_push.c b/menu/menu_entries_cbs_deferred_push.c index 48163a111d..5ddd944f9d 100644 --- a/menu/menu_entries_cbs_deferred_push.c +++ b/menu/menu_entries_cbs_deferred_push.c @@ -1400,24 +1400,15 @@ static int deferred_push_core_options(void *data, void *userdata, static int deferred_push_disk_options(void *data, void *userdata, const char *path, const char *label, unsigned type) { - file_list_t *list = (file_list_t*)data; + menu_displaylist_info_t info = {0}; - (void)userdata; + info.list = (file_list_t*)data; + info.menu_list = (file_list_t*)userdata; + info.type = type; + strlcpy(info.path, path, sizeof(info.path)); + strlcpy(info.label, label, sizeof(info.label)); - if (!list) - return -1; - - menu_list_clear(list); - menu_list_push(list, "Disk Index", "disk_idx", - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_INDEX, 0); - menu_list_push(list, "Disk Cycle Tray Status", "disk_cycle_tray_status", - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_CYCLE_TRAY_STATUS, 0); - menu_list_push(list, "Disk Image Append", "disk_image_append", - MENU_SETTINGS_CORE_DISK_OPTIONS_DISK_IMAGE_APPEND, 0); - - menu_driver_populate_entries(path, label, type); - - return 0; + return menu_displaylist_push_list(&info, DISPLAYLIST_OPTIONS_DISK); } #ifdef HAVE_NETWORKING