From c89b91b174deb3af2b270a78d2167d873aadd1ca Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 25 Nov 2014 03:49:26 +0100 Subject: [PATCH] Add update_core_info function callback to menu display layer --- menu/disp/glui.c | 7 +++++++ menu/disp/ios.c | 7 +++++++ menu/disp/lakka.c | 7 +++++++ menu/disp/menu_display.h | 1 + menu/disp/rgui.c | 7 +++++++ menu/disp/rmenu.c | 7 +++++++ menu/disp/rmenu_xui.cpp | 7 +++++++ menu/disp/xmb.c | 6 ++++++ menu/menu_common.c | 9 +++++---- menu/menu_common.h | 2 ++ 10 files changed, 56 insertions(+), 4 deletions(-) diff --git a/menu/disp/glui.c b/menu/disp/glui.c index 0863d1fb62..311493b1cc 100644 --- a/menu/disp/glui.c +++ b/menu/disp/glui.c @@ -434,6 +434,12 @@ static void glui_init_core_info(void *data) } } +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; @@ -619,6 +625,7 @@ menu_ctx_driver_t menu_ctx_glui = { NULL, NULL, glui_init_core_info, + glui_update_core_info, &menu_ctx_backend_common, "glui", }; diff --git a/menu/disp/ios.c b/menu/disp/ios.c index a7502a0398..01681ed9e6 100644 --- a/menu/disp/ios.c +++ b/menu/disp/ios.c @@ -61,6 +61,12 @@ static int menu_ios_iterate(unsigned action) return 0; } +static void ios_update_core_info(void *data) +{ + (void)data; + menu_update_libretro_info(&g_extern.menu.info); +} + menu_ctx_driver_backend_t menu_ctx_backend_ios = { menu_ios_iterate, @@ -92,6 +98,7 @@ menu_ctx_driver_t menu_ctx_ios = { NULL, // list_clear NULL, // list_set_selection NULL, // init_core_info + ios_update_core_info, // ios_update_core_info &menu_ctx_backend_ios, // backend "ios", }; diff --git a/menu/disp/lakka.c b/menu/disp/lakka.c index be3fd186b2..8006947823 100644 --- a/menu/disp/lakka.c +++ b/menu/disp/lakka.c @@ -1172,6 +1172,12 @@ static void lakka_init_core_info(void *data) g_extern.core_info = core_info_list_new(g_settings.libretro_directory); } +static void lakka_update_core_info(void *data) +{ + (void)data; + menu_update_libretro_info(&g_extern.menu.info); +} + static void *lakka_init(void) { menu_handle_t *menu = NULL; @@ -1333,6 +1339,7 @@ menu_ctx_driver_t menu_ctx_lakka = { NULL, NULL, lakka_init_core_info, + lakka_update_core_info, &menu_ctx_backend_lakka, "lakka", }; diff --git a/menu/disp/menu_display.h b/menu/disp/menu_display.h index f084884e35..c6a06e9dfb 100644 --- a/menu/disp/menu_display.h +++ b/menu/disp/menu_display.h @@ -32,6 +32,7 @@ typedef struct menu_ctx_driver void (*list_clear)(void *); void (*list_set_selection)(void *); void (*init_core_info)(void *); + void (*update_core_info)(void *); const menu_ctx_driver_backend_t *backend; const char *ident; diff --git a/menu/disp/rgui.c b/menu/disp/rgui.c index 90fc57d3ea..cf7ed393b6 100644 --- a/menu/disp/rgui.c +++ b/menu/disp/rgui.c @@ -563,6 +563,12 @@ static void rgui_navigation_set(void *data, bool scroll) - RGUI_TERM_HEIGHT; } +static void rgui_update_core_info(void *data) +{ + (void)data; + menu_update_libretro_info(&g_extern.menu.info); +} + menu_ctx_driver_t menu_ctx_rgui = { rgui_set_texture, rgui_render_messagebox, @@ -588,6 +594,7 @@ menu_ctx_driver_t menu_ctx_rgui = { NULL, NULL, NULL, + rgui_update_core_info, &menu_ctx_backend_common, "rgui", }; diff --git a/menu/disp/rmenu.c b/menu/disp/rmenu.c index 7c3ed72f12..fdb56c7200 100644 --- a/menu/disp/rmenu.c +++ b/menu/disp/rmenu.c @@ -322,6 +322,12 @@ static void rmenu_free(void *data) { } +static void rmenu_update_core_info(void *data) +{ + (void)data; + menu_update_libretro_info(&g_extern.menu.info); +} + menu_ctx_driver_t menu_ctx_rmenu = { rmenu_set_texture, rmenu_render_messagebox, @@ -347,6 +353,7 @@ menu_ctx_driver_t menu_ctx_rmenu = { NULL, NULL, NULL, + rmenu_update_core_info, &menu_ctx_backend_common, "rmenu", }; diff --git a/menu/disp/rmenu_xui.cpp b/menu/disp/rmenu_xui.cpp index f8d00b120e..15f7ef6d47 100644 --- a/menu/disp/rmenu_xui.cpp +++ b/menu/disp/rmenu_xui.cpp @@ -520,6 +520,12 @@ static void rmenu_xui_list_set_selection(void *data) XuiListSetCurSel(m_menulist, file_list_get_directory_ptr(list)); } +static void rmenu_xui_update_core_info(void *data) +{ + (void)data; + update_libretro_info(&g_extern.menu.info); +} + menu_ctx_driver_t menu_ctx_rmenu_xui = { NULL, rmenu_xui_render_messagebox, @@ -545,6 +551,7 @@ menu_ctx_driver_t menu_ctx_rmenu_xui = { rmenu_xui_list_clear, rmenu_xui_list_set_selection, NULL, + rmenu_xui_update_core_info, &menu_ctx_backend_common, "rmenu_xui", }; diff --git a/menu/disp/xmb.c b/menu/disp/xmb.c index 6512054fb6..8227915c36 100644 --- a/menu/disp/xmb.c +++ b/menu/disp/xmb.c @@ -999,6 +999,11 @@ static void xmb_init_core_info(void *data) } } +static void xmb_update_core_info(void *data) +{ + (void)data; +} + static void *xmb_init(void) { menu_handle_t *menu = NULL; @@ -1416,6 +1421,7 @@ menu_ctx_driver_t menu_ctx_xmb = { xmb_list_clear, xmb_list_set_selection, xmb_init_core_info, + xmb_update_core_info, &menu_ctx_backend_common, "xmb", }; diff --git a/menu/menu_common.c b/menu/menu_common.c index 8e6db68668..f89922c22b 100644 --- a/menu/menu_common.c +++ b/menu/menu_common.c @@ -47,7 +47,7 @@ static void draw_frame(void) /* Update menu state which depends on config. */ -static void update_libretro_info(struct retro_system_info *info) +void menu_update_libretro_info(struct retro_system_info *info) { #ifndef HAVE_DYNAMIC retro_get_system_info(info); @@ -132,8 +132,9 @@ bool load_menu_content(void) return false; } - if (driver.menu) - update_libretro_info(&g_extern.menu.info); + if (driver.menu && driver.menu_ctx + && driver.menu_ctx->update_core_info) + driver.menu_ctx->update_core_info(driver.menu); menu_shader_manager_init(driver.menu); @@ -168,7 +169,7 @@ void *menu_init(const void *data) menu->push_start_screen = g_settings.menu_show_start_screen; g_settings.menu_show_start_screen = false; - update_libretro_info(&g_extern.menu.info); + menu_update_libretro_info(&g_extern.menu.info); menu_shader_manager_init(menu); diff --git a/menu/menu_common.h b/menu/menu_common.h index 3c73362a66..0ada58ba32 100644 --- a/menu/menu_common.h +++ b/menu/menu_common.h @@ -155,6 +155,8 @@ bool load_menu_content(void); void menu_update_system_info(menu_handle_t *menu, bool *load_no_content); +void menu_update_libretro_info(struct retro_system_info *info); + unsigned menu_common_type_is(const char *label, unsigned type); void apply_deferred_settings(void);