diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index b9ddba29e6..a05b7c1c67 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -453,23 +453,6 @@ static void glui_frame(void) gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); } -static void glui_init_core_info(void *data) -{ - (void)data; - - core_info_list_free(g_extern.core_info); - g_extern.core_info = NULL; - - if (*g_settings.libretro_directory) - g_extern.core_info = core_info_list_new(g_settings.libretro_directory); -} - -static void glui_update_core_info(void *data) -{ - (void)data; - menu_update_libretro_info(&g_extern.menu.info); -} - static void *glui_init(void) { menu_handle_t *menu; @@ -496,8 +479,6 @@ static void *glui_init(void) glui = (glui_handle_t*)menu->userdata; glui->bg = 0; - glui_init_core_info(menu); - return menu; error: if (menu) @@ -514,10 +495,6 @@ static void glui_free(void *data) if (menu->userdata) free(menu->userdata); - - if (g_extern.core_info) - core_info_list_free(g_extern.core_info); - g_extern.core_info = NULL; } static GLuint glui_png_texture_load_(const char * file_name) @@ -673,8 +650,6 @@ menu_ctx_driver_t menu_ctx_glui = { NULL, NULL, NULL, - glui_init_core_info, - glui_update_core_info, glui_entry_iterate, "glui", }; diff --git a/menu/drivers/ios.c b/menu/drivers/ios.c index 57259e6486..bcca2b089e 100644 --- a/menu/drivers/ios.c +++ b/menu/drivers/ios.c @@ -89,13 +89,6 @@ static void ios_free(void *data) free(menu); } - -static void ios_update_core_info(void *data) -{ - (void)data; - menu_update_libretro_info(&g_extern.menu.info); -} - menu_ctx_driver_t menu_ctx_ios = { NULL, // set_texture NULL, // render_messagebox @@ -122,8 +115,6 @@ menu_ctx_driver_t menu_ctx_ios = { NULL, // list_clear NULL, // list_cache NULL, // list_set_selection - NULL, // init_core_info - ios_update_core_info, // ios_update_core_info ios_entry_iterate, "ios", }; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 66f14e8d0d..2164513cc5 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -648,12 +648,6 @@ static void rgui_navigation_ascend_alphabet(void *data, size_t *unused) rgui_navigation_set(data, true); } -static void rgui_update_core_info(void *data) -{ - (void)data; - menu_update_libretro_info(&g_extern.menu.info); -} - static void rgui_populate_entries(void *data, const char *path, const char *label, unsigned k) { @@ -686,8 +680,6 @@ menu_ctx_driver_t menu_ctx_rgui = { NULL, NULL, NULL, - NULL, - rgui_update_core_info, rgui_entry_iterate, "rgui", }; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 5b63b4d670..ff10b57da3 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1039,7 +1039,7 @@ static void xmb_draw_items(file_list_t *list, file_list_t *stack, static void xmb_frame(void) { - int i, depth; + int i; char title_msg[PATH_MAX_LENGTH], timedate[PATH_MAX_LENGTH]; const char *core_name = NULL; const char *core_version = NULL; @@ -1093,18 +1093,13 @@ static void xmb_frame(void) xmb_draw_icon(xmb->textures[XMB_TEXTURE_ARROW].id, xmb->x + xmb->margin_left + xmb->hspacing - xmb->icon_size/2.0 + xmb->icon_size, xmb->margin_top + xmb->icon_size/2.0 + xmb->vspacing * xmb->active_item_factor, - xmb->arrow_alpha, - 0, - 1); - - depth = file_list_get_size(driver.menu->menu_list->menu_stack); + xmb->arrow_alpha, 0, 1); xmb_draw_items( xmb->selection_buf_old, xmb->menu_stack_old, xmb->selection_ptr_old, - depth > 1 ? driver.menu->cat_selection_ptr : - xmb->cat_selection_ptr_old); + xmb->cat_selection_ptr_old); xmb_draw_items( driver.menu->menu_list->selection_buf, driver.menu->menu_list->menu_stack, @@ -1163,21 +1158,6 @@ static void xmb_frame(void) gl_set_viewport(gl, gl->win_width, gl->win_height, false, false); } -static void xmb_init_core_info(void *data) -{ - (void)data; - - core_info_list_free(g_extern.core_info); - g_extern.core_info = NULL; - if (*g_settings.libretro_directory) - g_extern.core_info = core_info_list_new(g_settings.libretro_directory); -} - -static void xmb_update_core_info(void *data) -{ - (void)data; -} - static void *xmb_init(void) { menu_handle_t *menu = NULL; @@ -1268,12 +1248,15 @@ static void *xmb_init(void) xmb->label_margin_top = xmb->font_size/3.0; xmb->setting_margin_left = 600.0 * scale_factor; - xmb_init_core_info(menu); - xmb->num_categories = 1; - if (g_extern.core_info) - xmb->num_categories = g_extern.core_info->count + 1; + if (!g_extern.core_info) + { + RARCH_ERR("Global core informations not initialized.\n"); + goto error; + } + + xmb->num_categories = g_extern.core_info->count + 1; return menu; @@ -1291,13 +1274,8 @@ static void xmb_free(void *data) { menu_handle_t *menu = (menu_handle_t*)data; - if (g_extern.core_info) - core_info_list_free(g_extern.core_info); - if (menu->userdata) free(menu->userdata); - - g_extern.core_info = NULL; } static bool xmb_font_init_first(const gl_font_renderer_t **font_driver, @@ -1742,8 +1720,6 @@ menu_ctx_driver_t menu_ctx_xmb = { xmb_list_clear, xmb_list_cache, xmb_list_set_selection, - xmb_init_core_info, - xmb_update_core_info, xmb_entry_iterate, "xmb", }; diff --git a/menu/menu.c b/menu/menu.c index 015e0b6528..ce548adeb5 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -65,6 +65,8 @@ void menu_update_libretro_info(struct retro_system_info *info) g_extern.core_info = NULL; if (*g_settings.libretro_directory) g_extern.core_info = core_info_list_new(g_settings.libretro_directory); + if (driver.menu_ctx && driver.menu_ctx->context_reset) + driver.menu_ctx->context_reset(driver.menu); rarch_update_system_info(info, NULL); } @@ -147,9 +149,7 @@ bool menu_load_content(void) return false; } - if (driver.menu && driver.menu_ctx - && driver.menu_ctx->update_core_info) - driver.menu_ctx->update_core_info(driver.menu); + menu_update_libretro_info(&g_extern.menu.info); menu_shader_manager_init(driver.menu); @@ -176,6 +176,8 @@ void *menu_init(const void *data) if (!menu_ctx) return NULL; + menu_update_libretro_info(&g_extern.menu.info); + if (!(menu = (menu_handle_t*)menu_ctx->init())) return NULL; @@ -192,8 +194,6 @@ void *menu_init(const void *data) menu->push_start_screen = g_settings.menu_show_start_screen; g_settings.menu_show_start_screen = false; - menu_update_libretro_info(&g_extern.menu.info); - menu_shader_manager_init(menu); return menu; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index d2bcb404f2..dae4a479fd 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -201,8 +201,6 @@ typedef struct menu_ctx_driver void (*list_clear)(void *); void (*list_cache)(bool, unsigned); void (*list_set_selection)(void *); - void (*init_core_info)(void *); - void (*update_core_info)(void *); int (*entry_iterate)(unsigned); const char *ident; } menu_ctx_driver_t; diff --git a/retroarch.c b/retroarch.c index a6e1462e6f..1ca51a69b2 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2762,15 +2762,8 @@ bool rarch_main_command(unsigned cmd) case RARCH_CMD_CORE_INFO_INIT: rarch_main_command(RARCH_CMD_CORE_INFO_DEINIT); - if (*g_settings.libretro_directory && - !g_extern.core_info) - { + if (*g_settings.libretro_directory && !g_extern.core_info) g_extern.core_info = core_info_list_new(g_settings.libretro_directory); -#ifdef HAVE_MENU - if (driver.menu_ctx && driver.menu_ctx->init_core_info) - driver.menu_ctx->init_core_info(driver.menu); -#endif - } break; case RARCH_CMD_CORE_DEINIT: deinit_core();