From 9e8f5127e2ddcf1ebe9cb65e79b14b9f49fa9b08 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 1 Aug 2016 14:20:47 +0200 Subject: [PATCH] (General) Allow for platforms to set menu OK/cancel buttons individually (Shield/Android) Set default OK/cancel buttons now to Shield A (OK) and Shield B (Cancel), previous default was Shield A (Cancel), Shield B (OK) --- configuration.c | 20 ++++++++++++++++++-- defaults.h | 8 +++++++- frontend/drivers/platform_linux.c | 6 ++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/configuration.c b/configuration.c index 30ac13d75c..c559b744db 100644 --- a/configuration.c +++ b/configuration.c @@ -419,6 +419,22 @@ bool config_overlay_enable_default(void) return true; } +#ifdef HAVE_MENU +static unsigned config_menu_btn_ok_default(void) +{ + if (g_defaults.menu.controls.set) + return g_defaults.menu.controls.menu_btn_ok; + return default_menu_btn_ok; +} + +static unsigned config_menu_btn_cancel_default(void) +{ + if (g_defaults.menu.controls.set) + return g_defaults.menu.controls.menu_btn_ok; + return default_menu_btn_cancel; +} +#endif + /** * config_set_defaults: * @@ -798,8 +814,8 @@ static void config_set_defaults(void) settings->sort_savefiles_enable = default_sort_savefiles_enable; settings->sort_savestates_enable = default_sort_savestates_enable; - settings->menu_ok_btn = default_menu_btn_ok; - settings->menu_cancel_btn = default_menu_btn_cancel; + settings->menu_ok_btn = config_menu_btn_ok_default(); + settings->menu_cancel_btn = config_menu_btn_cancel_default(); settings->menu_search_btn = default_menu_btn_search; settings->menu_default_btn = default_menu_btn_default; settings->menu_info_btn = default_menu_btn_info; diff --git a/defaults.h b/defaults.h index 7df72ded91..1db1e01e98 100644 --- a/defaults.h +++ b/defaults.h @@ -26,7 +26,6 @@ struct defaults { - #ifdef HAVE_MENU struct { @@ -35,6 +34,13 @@ struct defaults bool menu_color_theme_enable; unsigned menu_color_theme; } materialui; + + struct + { + bool set; + unsigned menu_btn_ok; + unsigned menu_btn_cancel; + } controls; } menu; #endif diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index c2e700007a..5ef5a0378f 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -1663,6 +1663,12 @@ static void frontend_linux_get_env(int *argc, g_defaults.menu.materialui.menu_color_theme = MATERIALUI_THEME_NVIDIA_SHIELD; #endif #endif + + /* Set the OK/cancel menu buttons to the default + * ones used for Shield */ + g_defaults.menu.controls.set = true; + g_defaults.menu.controls.menu_btn_ok = RETRO_DEVICE_ID_JOYPAD_B; + g_defaults.menu.controls.menu_btn_cancel = RETRO_DEVICE_ID_JOYPAD_A; } else if (strstr(device_model, "JSS15J")) g_defaults.settings.video_refresh_rate = 59.65;