diff --git a/driver.c b/driver.c index a10a33bfcf..117644dae5 100644 --- a/driver.c +++ b/driver.c @@ -362,7 +362,7 @@ static void init_drivers(int flags) if (flags & DRIVER_MENU) { - init_menu(); + menu_driver_ctl(RARCH_MENU_CTL_INIT, NULL); menu_driver_ctl(RARCH_MENU_CTL_CONTEXT_RESET, NULL); } #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index cfdc73e83d..17e391e55d 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -286,21 +286,6 @@ error: return NULL; } -void init_menu(void) -{ - if (menu_driver_data) - return; - - find_menu_driver(); - - if (!(menu_driver_data = (menu_handle_t*)menu_init(menu_driver_ctx))) - retro_fail(1, "init_menu()"); - - if (menu_driver_ctx->lists_init) - if (!menu_driver_ctx->lists_init(menu_driver_data)) - retro_fail(1, "init_menu()"); -} - void menu_driver_list_insert(file_list_t *list, const char *path, const char *label, size_t idx) { @@ -657,6 +642,29 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) menu_free(menu_driver_data); menu_driver_data = NULL; break; + case RARCH_MENU_CTL_INIT: + if (menu_driver_data) + return false; + + find_menu_driver(); + + menu_driver_data = (menu_handle_t*)menu_init(menu_driver_ctx); + + if (!menu_driver_data) + { + retro_fail(1, "init_menu()"); + return false; + } + + if (menu_driver_ctx->lists_init) + { + if (!menu_driver_ctx->lists_init(menu_driver_data)) + { + retro_fail(1, "init_menu()"); + return false; + } + } + break; case RARCH_MENU_CTL_LOAD_NO_CONTENT_GET: { bool **ptr = (bool**)data; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index b6adbd00f6..3ce95f1501 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -99,6 +99,7 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_NAVIGATION_ASCEND_ALPHABET, RARCH_MENU_CTL_NAVIGATION_DESCEND_ALPHABET, RARCH_MENU_CTL_DEINIT, + RARCH_MENU_CTL_INIT, RARCH_MENU_CTL_SHADER_DEINIT, RARCH_MENU_CTL_SHADER_GET, RARCH_MENU_CTL_BLIT_RENDER, @@ -349,8 +350,6 @@ const char* config_get_menu_driver_options(void); void find_menu_driver(void); -void init_menu(void); - menu_handle_t *menu_driver_get_ptr(void); bool menu_driver_load_image(void *data, menu_image_type_t type);