diff --git a/driver.c b/driver.c index 117644dae5..257356a333 100644 --- a/driver.c +++ b/driver.c @@ -454,7 +454,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data) find_camera_driver(); find_location_driver(); #ifdef HAVE_MENU - find_menu_driver(); + menu_driver_ctl(RARCH_MENU_CTL_FIND_DRIVER, NULL); #endif break; case RARCH_DRIVER_CTL_SET_REFRESH_RATE: diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 17e391e55d..49f3f658bf 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -105,7 +105,7 @@ const char *config_get_menu_driver_options(void) return char_list_new_special(STRING_LIST_MENU_DRIVERS, NULL); } -void find_menu_driver(void) +static bool find_menu_driver(void) { int i; driver_ctx_info_t drv; @@ -133,8 +133,13 @@ void find_menu_driver(void) menu_driver_ctx = (const menu_ctx_driver_t*)menu_driver_find_handle(0); if (!menu_driver_ctx) + { retro_fail(1, "find_menu_driver()"); + return false; + } } + + return true; } menu_handle_t *menu_driver_get_ptr(void) @@ -533,6 +538,8 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) content_playlist_free(menu_driver_playlist); menu_driver_playlist = NULL; break; + case RARCH_MENU_CTL_FIND_DRIVER: + return find_menu_driver(); case RARCH_MENU_CTL_PLAYLIST_INIT: { const char *path = (const char*)data; @@ -646,7 +653,8 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) if (menu_driver_data) return false; - find_menu_driver(); + if (!menu_display_ctl(RARCH_MENU_CTL_FIND_DRIVER, NULL)) + return false; menu_driver_data = (menu_handle_t*)menu_init(menu_driver_ctx); diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 3ce95f1501..650f52cf37 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -135,7 +135,8 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_CONTEXT_DESTROY, RARCH_MENU_CTL_SHADER_MANAGER_INIT, RARCH_MENU_CTL_LIST_SET_SELECTION, - RARCH_MENU_CTL_POPULATE_ENTRIES + RARCH_MENU_CTL_POPULATE_ENTRIES, + RARCH_MENU_CTL_FIND_DRIVER }; typedef enum @@ -348,8 +349,6 @@ const char *menu_driver_find_ident(int index); **/ const char* config_get_menu_driver_options(void); -void find_menu_driver(void); - menu_handle_t *menu_driver_get_ptr(void); bool menu_driver_load_image(void *data, menu_image_type_t type);