From 7260e52a23ff4d64d160947ef04b72f96e32f070 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 6 Oct 2018 17:48:12 +0200 Subject: [PATCH] Make improved version of this - https://github.com/libretro/RetroArch/pull/7350/commits/873d60151fb7ff88fca5353a02b498dff7fc964b --- configuration.c | 23 +++++++++++++++++++++++ menu/menu_driver.c | 12 ++++++++++++ menu/menu_driver.h | 2 ++ 3 files changed, 37 insertions(+) diff --git a/configuration.c b/configuration.c index 35f3185c6c..0282ca2acc 100644 --- a/configuration.c +++ b/configuration.c @@ -2340,6 +2340,24 @@ error: return NULL; } +#if defined(HAVE_MENU) && defined(HAVE_RGUI) +static bool check_menu_driver_compatibility(void) +{ + settings_t *settings = config_get_ptr(); + char *video_driver = settings->arrays.video_driver; + char *menu_driver = settings->arrays.menu_driver; + + if (string_is_equal (menu_driver, "rgui") || + string_is_equal(menu_driver, "null")) + return true; + + if (menu_display_driver_exists(video_driver)) + return true; + + return false; +} +#endif + static void read_keybinds_keyboard(config_file_t *conf, unsigned user, unsigned idx, struct retro_keybind *bind) { @@ -3045,6 +3063,11 @@ static bool config_load_file(const char *path, bool set_defaults, } } +#if defined(HAVE_MENU) && defined(HAVE_RGUI) + if (!check_menu_driver_compatibility()) + strlcpy(settings->arrays.menu_driver, "rgui", sizeof(settings->arrays.menu_driver)); +#endif + frontend_driver_set_sustained_performance_mode(settings->bools.sustained_performance_mode); recording_driver_update_streaming_url(); diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 4bae4f41b1..6075c63c2c 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -634,6 +634,18 @@ float menu_display_get_dpi(void) return dpi; } +bool menu_display_driver_exists(const char *s) +{ + unsigned i; + for (i = 0; i < ARRAY_SIZE(menu_display_ctx_drivers); i++) + { + if (string_is_equal(s, menu_display_ctx_drivers[i]->ident)) + return true; + } + + return false; +} + bool menu_display_init_first_driver(bool video_is_threaded) { unsigned i; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 7a509d81ae..7546482f5b 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -824,6 +824,8 @@ void menu_display_reset_textures_list( int menu_display_osk_ptr_at_pos(void *data, int x, int y, unsigned width, unsigned height); +bool menu_display_driver_exists(const char *s); + void menu_driver_destroy(void); extern uintptr_t menu_display_white_texture;