From 7016d8b51f7f9faee2ad828e9340225c5e5bdc97 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Tue, 9 Jul 2019 12:43:21 -0400 Subject: [PATCH] cdrom: only show load/dump menu options if a drive is present on the system --- menu/menu_displaylist.c | 5 +++-- menu/menu_setting.c | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 69f1edc765..1ef3a56fbf 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -4923,14 +4923,15 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, 0, i); } - if (list->size == 0) + if (!list || list->size == 0) menu_entries_append_enum(info->list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_ENTRIES_TO_DISPLAY), msg_hash_to_str(MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY), MENU_ENUM_LABEL_NO_ENTRIES_TO_DISPLAY, FILE_TYPE_NONE, 0, 0); - string_list_free(list); + if (list) + string_list_free(list); info->need_push = true; info->need_refresh = true; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 263e77ba33..2a0e7b463f 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6652,21 +6652,33 @@ static bool setting_append_list( #ifdef HAVE_CDROM /* TODO/FIXME - add check seeing if CDROM is inserted into tray */ - CONFIG_ACTION( - list, list_info, - MENU_ENUM_LABEL_LOAD_DISC, - MENU_ENUM_LABEL_VALUE_LOAD_DISC, - &group_info, - &subgroup_info, - parent_group); + { + struct string_list *drive_list = cdrom_get_available_drives(); - CONFIG_ACTION( - list, list_info, - MENU_ENUM_LABEL_DUMP_DISC, - MENU_ENUM_LABEL_VALUE_DUMP_DISC, - &group_info, - &subgroup_info, - parent_group); + if (drive_list) + { + if (drive_list->size) + { + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_LOAD_DISC, + MENU_ENUM_LABEL_VALUE_LOAD_DISC, + &group_info, + &subgroup_info, + parent_group); + + CONFIG_ACTION( + list, list_info, + MENU_ENUM_LABEL_DUMP_DISC, + MENU_ENUM_LABEL_VALUE_DUMP_DISC, + &group_info, + &subgroup_info, + parent_group); + } + + string_list_free(drive_list); + } + } #endif if (string_is_not_equal(settings->arrays.menu_driver, "xmb") && string_is_not_equal(settings->arrays.menu_driver, "ozone"))