From 23569044ffba9f034cf09201a344b5d2e0d47266 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 5 Dec 2014 14:13:29 +0100 Subject: [PATCH] Add 'Hide Unbound Input Descriptor' --- config.def.h | 2 ++ general.h | 1 + retroarch.cfg | 3 +++ settings.c | 5 +++++ settings_data.c | 50 +++++++++++++++++++++++++++++++++++++------------ 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/config.def.h b/config.def.h index b817be5c26..3808386c79 100644 --- a/config.def.h +++ b/config.def.h @@ -640,6 +640,8 @@ static const bool input_autodetect_enable = true; * of the default ones. */ static const bool input_descriptor_label_show = true; +static const bool input_descriptor_hide_unbound = false; + #ifndef IS_SALAMANDER #include "intl/intl.h" diff --git a/general.h b/general.h index 6020b90ad2..c3b0b098f8 100644 --- a/general.h +++ b/general.h @@ -379,6 +379,7 @@ struct settings char autoconfig_dir[PATH_MAX]; bool input_descriptor_label_show; + bool input_descriptor_hide_unbound; } input; struct diff --git a/retroarch.cfg b/retroarch.cfg index 7cf63ded63..ee357ff5b2 100644 --- a/retroarch.cfg +++ b/retroarch.cfg @@ -320,6 +320,9 @@ # default ones. # input_descriptor_label_show = true +# Hide input descriptors that were not set by the core. +# input_descriptor_hide_unbound = false + # Directory for joypad autoconfigs. # If a joypad is plugged in, that joypad will be autoconfigured if a config file # corresponding to that joypad is present in joypad_autoconfig_dir. diff --git a/settings.c b/settings.c index 2374d1be0c..2ee3b191a4 100644 --- a/settings.c +++ b/settings.c @@ -442,6 +442,7 @@ static void config_set_defaults(void) g_settings.camera.allow = false; g_settings.input.input_descriptor_label_show = input_descriptor_label_show; + g_settings.input.input_descriptor_hide_unbound = input_descriptor_hide_unbound; rarch_assert(sizeof(g_settings.input.binds[0]) >= sizeof(retro_keybinds_1)); rarch_assert(sizeof(g_settings.input.binds[1]) >= sizeof(retro_keybinds_rest)); @@ -1001,6 +1002,8 @@ static bool config_load_file(const char *path, bool set_defaults) "netplay_client_swap_input"); CONFIG_GET_BOOL(input.input_descriptor_label_show, "input_descriptor_label_show"); + CONFIG_GET_BOOL(input.input_descriptor_hide_unbound, + "input_descriptor_hide_unbound"); for (i = 0; i < MAX_PLAYERS; i++) { @@ -1565,6 +1568,8 @@ bool config_save_file(const char *path) g_settings.input.netplay_client_swap_input); config_set_bool(conf, "input_descriptor_label_show", g_settings.input.input_descriptor_label_show); + config_set_bool(conf, "input_descriptor_hide_unbound", + g_settings.input.input_descriptor_hide_unbound); config_set_bool(conf, "load_dummy_on_core_shutdown", g_settings.load_dummy_on_core_shutdown); config_set_bool(conf, "fps_show", g_settings.fps_show); diff --git a/settings_data.c b/settings_data.c index f5337cb269..143ce7ec78 100644 --- a/settings_data.c +++ b/settings_data.c @@ -4321,6 +4321,18 @@ static bool setting_data_append_list_input_options( general_write_handler, general_read_handler); + CONFIG_BOOL( + g_settings.input.input_descriptor_hide_unbound, + "input_descriptor_hide_unbound", + "Hide Unbound Core Input Descriptors", + input_descriptor_hide_unbound, + "OFF", + "ON", + group_info.name, + subgroup_info.name, + general_write_handler, + general_read_handler); + END_SUB_GROUP(list, list_info); START_SUB_GROUP( @@ -4529,6 +4541,7 @@ static bool setting_data_append_list_input_options( for (i = 0; i < RARCH_BIND_LIST_END; i ++) { + bool do_add = true; char label[PATH_MAX]; char name[PATH_MAX]; const struct input_bind_map* keybind = @@ -4543,23 +4556,36 @@ static bool setting_data_append_list_input_options( && (g_extern.has_set_input_descriptors) && (i != RARCH_TURBO_ENABLE) ) - snprintf(label, sizeof(label), "%s %s", buffer[user], - g_extern.system.input_desc_btn[user][i] ? g_extern.system.input_desc_btn[user][i] : "N/A"); + { + if (g_extern.system.input_desc_btn[user][i]) + snprintf(label, sizeof(label), "%s %s", buffer[user], + g_extern.system.input_desc_btn[user][i]); + else + { + snprintf(label, sizeof(label), "%s %s", buffer[user], "N/A"); + + if (g_settings.input.input_descriptor_hide_unbound) + do_add = false; + } + } else snprintf(label, sizeof(label), "%s %s", buffer[user], keybind->desc); snprintf(name, sizeof(name), "p%u_%s", user + 1, keybind->base); - CONFIG_BIND( - g_settings.input.binds[user][i], - user + 1, - user, - strdup(name), /* TODO: Find a way to fix these memleaks. */ - strdup(label), - &defaults[i], - group_info.name, - subgroup_info.name); - settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); + if (do_add) + { + CONFIG_BIND( + g_settings.input.binds[user][i], + user + 1, + user, + strdup(name), /* TODO: Find a way to fix these memleaks. */ + strdup(label), + &defaults[i], + group_info.name, + subgroup_info.name); + settings_list_current_add_bind_type(list, list_info, i + MENU_SETTINGS_BIND_BEGIN); + } } END_SUB_GROUP(list, list_info); }