From 85ac84cb08f0992e6c4c56fc8db3de354c122efd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 26 Nov 2014 21:56:53 +0100 Subject: [PATCH] Implement joypad driver settings options too --- input/input_context.c | 29 +++++++++++++++++++++++++++++ input/input_context.h | 2 ++ settings_data.c | 3 ++- 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/input/input_context.c b/input/input_context.c index 51d1a51e46..64531b209a 100644 --- a/input/input_context.c +++ b/input/input_context.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "../general.h" rarch_joypad_driver_t *joypad_drivers[] = { @@ -70,6 +71,34 @@ rarch_joypad_driver_t *joypad_drivers[] = { NULL, }; +const char* config_get_joypad_driver_options(void) +{ + union string_list_elem_attr attr; + char *options = NULL; + int option_k = 0; + int options_len = 0; + struct string_list *options_l = NULL; + + attr.i = 0; + options_l = (struct string_list*)string_list_new(); + + for (option_k = 0; joypad_drivers[option_k]; option_k++) + { + const char *opt = joypad_drivers[option_k]->ident; + options_len += strlen(opt) + 1; + string_list_append(options_l, opt, attr); + } + + options = (char*)calloc(options_len, sizeof(char)); + + string_list_join_concat(options, options_len, options_l, "|"); + + string_list_free(options_l); + options_l = NULL; + + return options; +} + const struct input_key_map input_config_key_map[] = { { "left", RETROK_LEFT }, { "right", RETROK_RIGHT }, diff --git a/input/input_context.h b/input/input_context.h index f01b907de9..c888133227 100644 --- a/input/input_context.h +++ b/input/input_context.h @@ -42,6 +42,8 @@ struct rarch_joypad_driver typedef struct rarch_joypad_driver rarch_joypad_driver_t; +const char* config_get_joypad_driver_options(void); + /* If ident points to NULL or a zero-length string, * equivalent to calling input_joypad_init_first(). */ const rarch_joypad_driver_t *input_joypad_init_driver(const char *ident); diff --git a/settings_data.c b/settings_data.c index 993138bc40..4b668d1af0 100644 --- a/settings_data.c +++ b/settings_data.c @@ -3075,11 +3075,12 @@ static bool setting_data_append_list_driver_options( settings_data_list_current_add_flags(list, list_info, SD_FLAG_IS_DRIVER); #endif - CONFIG_STRING( + CONFIG_STRING_OPTIONS( g_settings.input.joypad_driver, "input_joypad_driver", "Joypad Driver", config_get_default_joypad(), + config_get_joypad_driver_options(), group_info.name, subgroup_info.name, NULL,