From 6bae9244e8b331bce3fad8157f794805f5e6287b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 29 Apr 2017 17:23:09 +0200 Subject: [PATCH] Create menu_driver_init --- driver.c | 5 +--- menu/menu_driver.c | 69 ++++++++++++++++++++++++++-------------------- menu/menu_driver.h | 5 ++-- 3 files changed, 42 insertions(+), 37 deletions(-) diff --git a/driver.c b/driver.c index b4e5778654..9ab8c2fe9a 100644 --- a/driver.c +++ b/driver.c @@ -353,10 +353,7 @@ void drivers_init(int flags) if (flags & DRIVER_VIDEO_MASK) { if (flags & DRIVER_MENU_MASK) - { - menu_driver_ctl(RARCH_MENU_CTL_INIT, NULL); - menu_driver_context_reset(video_is_threaded); - } + menu_driver_init(video_is_threaded); } #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index aef53cdfd6..41ca2da2f8 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -458,7 +458,7 @@ void menu_driver_decrement_navigation(void) menu_driver_ctx->navigation_decrement(menu_userdata); } -bool menu_driver_context_reset(bool video_is_threaded) +static bool menu_driver_context_reset(bool video_is_threaded) { if (!menu_driver_ctx || !menu_driver_ctx->context_reset) return false; @@ -466,6 +466,44 @@ bool menu_driver_context_reset(bool video_is_threaded) return true; } +static bool menu_driver_init_internal(bool video_is_threaded) +{ + settings_t *settings = config_get_ptr(); + menu_update_libretro_info(); + if (menu_driver_data) + return true; + + menu_driver_data = (menu_handle_t*) + menu_driver_ctx->init(&menu_userdata); + + if (!menu_driver_data || !menu_init(menu_driver_data)) + { + retroarch_fail(1, "init_menu()"); + return false; + } + + strlcpy(settings->arrays.menu_driver, menu_driver_ctx->ident, + sizeof(settings->arrays.menu_driver)); + + if (menu_driver_ctx->lists_init) + { + if (!menu_driver_ctx->lists_init(menu_driver_data)) + { + retroarch_fail(1, "init_menu()"); + return false; + } + } + + return true; +} + +bool menu_driver_init(bool video_is_threaded) +{ + if (menu_driver_init_internal(video_is_threaded)) + return menu_driver_context_reset(video_is_threaded); + return false; +} + bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) { switch (state) @@ -630,35 +668,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) } menu_driver_data = NULL; break; - case RARCH_MENU_CTL_INIT: - { - settings_t *settings = config_get_ptr(); - menu_update_libretro_info(); - if (menu_driver_data) - return true; - - menu_driver_data = (menu_handle_t*) - menu_driver_ctx->init(&menu_userdata); - - if (!menu_driver_data || !menu_init(menu_driver_data)) - { - retroarch_fail(1, "init_menu()"); - return false; - } - - strlcpy(settings->arrays.menu_driver, menu_driver_ctx->ident, - sizeof(settings->arrays.menu_driver)); - - if (menu_driver_ctx->lists_init) - { - if (!menu_driver_ctx->lists_init(menu_driver_data)) - { - retroarch_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 c92c0dcf3b..af8f8148d1 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -91,7 +91,6 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_SET_PENDING_QUIT, RARCH_MENU_CTL_SET_PENDING_SHUTDOWN, RARCH_MENU_CTL_DEINIT, - RARCH_MENU_CTL_INIT, RARCH_MENU_CTL_SET_PREVENT_POPULATE, RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, RARCH_MENU_CTL_IS_PREVENT_POPULATE, @@ -400,10 +399,10 @@ bool menu_driver_list_clear(void *data); void menu_driver_increment_navigation(void); -bool menu_driver_context_reset(bool is_threaded); - void menu_driver_decrement_navigation(void); +bool menu_driver_init(bool video_is_threaded); + extern menu_ctx_driver_t menu_ctx_xui; extern menu_ctx_driver_t menu_ctx_rgui; extern menu_ctx_driver_t menu_ctx_mui;