diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 5b87567f20..5e804a6130 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -883,3 +883,12 @@ void menu_resolve_supported_cores(rgui_handle_t *rgui) rgui_list_sort_on_alt(rgui->selection_buf); } + +void menu_init_core_info(rgui_handle_t *rgui) +{ + core_info_list_free(rgui->core_info); + rgui->core_info = NULL; + if (*rgui->libretro_dir) + rgui->core_info = core_info_list_new(rgui->libretro_dir); +} + diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 35d68bc0b4..2ca8c33682 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -355,6 +355,8 @@ void menu_ticker_line(char *buf, size_t len, unsigned tick, const char *str, boo void menu_resolve_libretro_names(rgui_list_t *list, const char *dir); void menu_resolve_supported_cores(rgui_handle_t *rgui); +void menu_init_core_info(rgui_handle_t *rgui); + void load_menu_game_prepare(void); bool load_menu_game(void); void load_menu_game_history(unsigned game_index); diff --git a/frontend/menu/menu_settings.c b/frontend/menu/menu_settings.c index 358d308d4f..d9a5f4c3af 100644 --- a/frontend/menu/menu_settings.c +++ b/frontend/menu/menu_settings.c @@ -570,8 +570,7 @@ int menu_set_settings(unsigned setting, unsigned action) if (action == RGUI_ACTION_START) { *rgui->libretro_dir = '\0'; - core_info_list_free(rgui->core_info); - rgui->core_info = NULL; + menu_init_core_info(rgui); } break; #endif @@ -579,10 +578,7 @@ int menu_set_settings(unsigned setting, unsigned action) if (action == RGUI_ACTION_START) { *g_settings.libretro_info_path = '\0'; - core_info_list_free(rgui->core_info); - rgui->core_info = NULL; - if (*rgui->libretro_dir) - rgui->core_info = core_info_list_new(rgui->libretro_dir); + menu_init_core_info(rgui); } break; case RGUI_CONFIG_DIR_PATH: diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 07d2d72067..10375973d7 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -1426,10 +1426,7 @@ static int rgui_iterate(void *data, unsigned action) else if (menu_type == RGUI_LIBRETRO_DIR_PATH) { strlcpy(rgui->libretro_dir, dir, sizeof(rgui->libretro_dir)); - core_info_list_free(rgui->core_info); - rgui->core_info = NULL; - if (*rgui->libretro_dir) - rgui->core_info = core_info_list_new(rgui->libretro_dir); + menu_init_core_info(rgui); rgui_flush_menu_stack_type(rgui, RGUI_SETTINGS_PATH_OPTIONS); } else if (menu_type == RGUI_CONFIG_DIR_PATH) @@ -1441,10 +1438,7 @@ static int rgui_iterate(void *data, unsigned action) else if (menu_type == RGUI_LIBRETRO_INFO_DIR_PATH) { strlcpy(g_settings.libretro_info_path, dir, sizeof(g_settings.libretro_info_path)); - core_info_list_free(rgui->core_info); - rgui->core_info = NULL; - if (*rgui->libretro_dir) - rgui->core_info = core_info_list_new(rgui->libretro_dir); + menu_init_core_info(rgui); rgui_flush_menu_stack_type(rgui, RGUI_SETTINGS_PATH_OPTIONS); } else if (menu_type == RGUI_SHADER_DIR_PATH)