diff --git a/driver_menu.h b/driver_menu.h index 5e8eed9ee9..3461d9379a 100644 --- a/driver_menu.h +++ b/driver_menu.h @@ -102,7 +102,6 @@ typedef struct const uint8_t *font; bool alloc_font; - struct retro_system_info info; bool load_no_content; struct gfx_shader *shader; diff --git a/frontend/menu/disp/rgui.c b/frontend/menu/disp/rgui.c index 3fb7354b1a..e415ad2e74 100644 --- a/frontend/menu/disp/rgui.c +++ b/frontend/menu/disp/rgui.c @@ -317,13 +317,13 @@ static void rgui_render(void) blit_line(RGUI_TERM_START_X + RGUI_TERM_START_X, RGUI_TERM_START_X, title_buf, true); char title_msg[64]; - const char *core_name = driver.menu->info.library_name; + const char *core_name = g_extern.menu.info.library_name; if (!core_name) core_name = g_extern.system.info.library_name; if (!core_name) core_name = "No Core"; - const char *core_version = driver.menu->info.library_version; + const char *core_version = g_extern.menu.info.library_version; if (!core_version) core_version = g_extern.system.info.library_version; if (!core_version) diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index f39e51c0b9..0387e4edac 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -186,13 +186,13 @@ static void rmenu_render(void) title_buf, &font_parms); char title_msg[64]; - const char *core_name = menu->info.library_name; + const char *core_name = g_extern.menu.info.library_name; if (!core_name) core_name = g_extern.system.info.library_name; if (!core_name) core_name = "No Core"; - const char *core_version = menu->info.library_version; + const char *core_version = g_extern.menu.info.library_version; if (!core_version) core_version = g_extern.system.info.library_version; if (!core_version) diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index 7d61577295..388af0fe3c 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -403,13 +403,13 @@ static void rmenu_xui_render(void) blit_line(RXUI_TERM_START_X + 15, 15, title_buf, true); char title_msg[64]; - const char *core_name = driver.menu->info.library_name; + const char *core_name = g_extern.menu.info.library_name; if (!core_name) core_name = g_extern.system.info.library_name; if (!core_name) core_name = "No Core"; - const char *core_version = driver.menu->info.library_version; + const char *core_version = g_extern.menu.info.library_version; if (!core_version) core_version = g_extern.system.info.library_version; if (!core_version) diff --git a/frontend/menu/disp/shared.h b/frontend/menu/disp/shared.h index 1c71d87184..870b614cdd 100644 --- a/frontend/menu/disp/shared.h +++ b/frontend/menu/disp/shared.h @@ -114,7 +114,7 @@ static void get_title(const char *label, const char *dir, snprintf(title, sizeof_title, "CONTENT %s", dir); else { - const char *core_name = driver.menu->info.library_name; + const char *core_name = g_extern.menu.info.library_name; if (!core_name) core_name = g_extern.system.info.library_name; if (!core_name) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index ee7838c29d..208927594a 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -19,42 +19,6 @@ #include "menu_entries.h" #include "../frontend.h" -void menu_update_system_info(menu_handle_t *menu, bool *load_no_content) -{ - const core_info_t *info = NULL; -#if defined(HAVE_DYNAMIC) && defined(HAVE_MENU) - libretro_free_system_info(&menu->info); - if (!(*g_settings.libretro)) - return; - - libretro_get_system_info(g_settings.libretro, &menu->info, - load_no_content); -#endif - if (!g_extern.core_info) - return; - - if (!core_info_list_get_info(g_extern.core_info, - g_extern.core_info_current, g_settings.libretro)) - return; - - /* Keep track of info for the currently selected core. */ - info = (const core_info_t*)g_extern.core_info_current; - - if (!g_extern.verbosity) - return; - - RARCH_LOG("[Core Info]:\n"); - if (info->display_name) - RARCH_LOG("Display Name = %s\n", info->display_name); - if (info->supported_extensions) - RARCH_LOG("Supported Extensions = %s\n", - info->supported_extensions); - if (info->authors) - RARCH_LOG("Authors = %s\n", info->authors); - if (info->permissions) - RARCH_LOG("Permissions = %s\n", info->permissions); -} - static void draw_frame(bool enable) { if (driver.video_data && driver.video_poke && @@ -91,7 +55,7 @@ static void throttle_frame(void) static void menu_update_libretro_info(menu_handle_t *menu) { #ifndef HAVE_DYNAMIC - retro_get_system_info(&menu->info); + retro_get_system_info(&g_extern.menu.info); #endif core_info_list_free(g_extern.core_info); @@ -99,7 +63,7 @@ static void menu_update_libretro_info(menu_handle_t *menu) if (*g_settings.libretro_directory) g_extern.core_info = core_info_list_new(g_settings.libretro_directory); - menu_update_system_info(menu, NULL); + rarch_update_system_info(&g_extern.menu.info, NULL); } static void menu_environment_get(int *argc, char *argv[], @@ -136,7 +100,7 @@ bool load_menu_content(void) content_playlist_push(g_extern.history, g_extern.fullpath, g_settings.libretro, - driver.menu->info.library_name); + g_extern.menu.info.library_name); } } @@ -246,7 +210,7 @@ void menu_free(void *data) driver.menu_ctx->free(menu); #ifdef HAVE_DYNAMIC - libretro_free_system_info(&menu->info); + libretro_free_system_info(&g_extern.menu.info); #endif file_list_free(menu->menu_stack); diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index e67bc6cc1d..d2a799e8da 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -782,12 +782,12 @@ int menu_parse_and_resolve(file_list_t *list, file_list_t *menu_list) else if (!strcmp(label, "detect_core_list")) exts = g_extern.core_info ? core_info_list_get_all_extensions( g_extern.core_info) : ""; - else if (driver.menu->info.valid_extensions) + else if (g_extern.menu.info.valid_extensions) { exts = ext_buf; - if (*driver.menu->info.valid_extensions) + if (*g_extern.menu.info.valid_extensions) snprintf(ext_buf, sizeof(ext_buf), "%s|zip", - driver.menu->info.valid_extensions); + g_extern.menu.info.valid_extensions); else *ext_buf = '\0'; } diff --git a/general.h b/general.h index 48416be395..8fbc36accf 100644 --- a/general.h +++ b/general.h @@ -603,6 +603,13 @@ struct global bool out_rgb32; } filter; +#ifdef HAVE_MENU + struct + { + struct retro_system_info info; + } menu; +#endif + msg_queue_t *msg_queue; bool exec; @@ -831,6 +838,9 @@ int rarch_defer_core(core_info_list_t *data, const char *dir, const char *path, char *deferred_path, size_t sizeof_deferred_path); +void rarch_update_system_info(struct retro_system_info *info, + bool *load_no_content); + #ifdef __cplusplus } #endif diff --git a/retroarch.c b/retroarch.c index 1368466723..860f50a618 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3384,7 +3384,7 @@ void rarch_main_command(unsigned cmd) case RARCH_CMD_LOAD_CORE: #ifdef HAVE_MENU if (driver.menu) - menu_update_system_info(driver.menu, &driver.menu->load_no_content); + rarch_update_system_info(&g_extern.menu.info, &driver.menu->load_no_content); #endif break; case RARCH_CMD_LOAD_STATE: @@ -3999,3 +3999,39 @@ bool rarch_replace_config(const char *path) return true; } + +void rarch_update_system_info(struct retro_system_info *_info, bool *load_no_content) +{ + const core_info_t *info = NULL; +#if defined(HAVE_DYNAMIC) + libretro_free_system_info(_info); + if (!(*g_settings.libretro)) + return; + + libretro_get_system_info(g_settings.libretro, _info, + load_no_content); +#endif + if (!g_extern.core_info) + return; + + if (!core_info_list_get_info(g_extern.core_info, + g_extern.core_info_current, g_settings.libretro)) + return; + + /* Keep track of info for the currently selected core. */ + info = (const core_info_t*)g_extern.core_info_current; + + if (!g_extern.verbosity) + return; + + RARCH_LOG("[Core Info]:\n"); + if (info->display_name) + RARCH_LOG("Display Name = %s\n", info->display_name); + if (info->supported_extensions) + RARCH_LOG("Supported Extensions = %s\n", + info->supported_extensions); + if (info->authors) + RARCH_LOG("Authors = %s\n", info->authors); + if (info->permissions) + RARCH_LOG("Permissions = %s\n", info->permissions); +}