From c871faa1f5aec1d9f12646e8dda5bc35a5d59c33 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 25 Apr 2017 16:49:54 +0200 Subject: [PATCH] Move pid/vid arrays out of settings struct and move them to input_config --- configuration.c | 18 ++++++++++++------ configuration.h | 3 --- input/input_config.c | 33 +++++++++++++++++++++++++++++++++ input/input_config.h | 10 ++++++++++ menu/menu_displaylist.c | 5 +++-- tasks/task_autodetect.c | 6 ++---- 6 files changed, 60 insertions(+), 15 deletions(-) diff --git a/configuration.c b/configuration.c index 5736017659..5918acbfca 100644 --- a/configuration.c +++ b/configuration.c @@ -1165,6 +1165,7 @@ static void config_set_defaults(void) memcpy(settings->input.binds[i], retro_keybinds_rest, sizeof(retro_keybinds_rest)); + input_config_reset(); input_remapping_set_defaults(); input_autoconfigure_reset(); @@ -2874,15 +2875,18 @@ bool config_save_autoconf_profile(const char *path, unsigned user) unsigned i; char buf[PATH_MAX_LENGTH]; char autoconf_file[PATH_MAX_LENGTH]; + int32_t pid_user = 0; + int32_t vid_user = 0; bool ret = false; config_file_t *conf = NULL; settings_t *settings = config_get_ptr(); const char *autoconf_dir = settings->directory.autoconfig; + const char *joypad_ident = settings->input.joypad_driver; buf[0] = autoconf_file[0] = '\0'; fill_pathname_join(buf, autoconf_dir, - settings->input.joypad_driver, sizeof(buf)); + joypad_ident, sizeof(buf)); if(path_is_directory(buf)) { @@ -2914,17 +2918,19 @@ bool config_save_autoconf_profile(const char *path, unsigned user) return false; } - config_set_string(conf, "input_driver", - settings->input.joypad_driver); + config_set_string(conf, "input_driver", joypad_ident); config_set_string(conf, "input_device", input_config_get_device_name(user)); - if(settings->input.vid[user] && settings->input.pid[user]) + pid_user = input_config_get_pid(user); + vid_user = input_config_get_vid(user); + + if(pid_user && vid_user) { config_set_int(conf, "input_vendor_id", - settings->input.vid[user]); + vid_user); config_set_int(conf, "input_product_id", - settings->input.pid[user]); + pid_user); } for (i = 0; i < RARCH_FIRST_META_KEY; i++) diff --git a/configuration.h b/configuration.h index 6f97726d6e..57e2734410 100644 --- a/configuration.h +++ b/configuration.h @@ -285,9 +285,6 @@ typedef struct settings /* Set by autoconfiguration in joypad_autoconfig_dir. * Does not override main binds. */ bool swap_override; - int vid[MAX_USERS]; - int pid[MAX_USERS]; - unsigned libretro_device[MAX_USERS]; unsigned analog_dpad_mode[MAX_USERS]; diff --git a/input/input_config.c b/input/input_config.c index a34dcff61b..28f0008467 100644 --- a/input/input_config.c +++ b/input/input_config.c @@ -74,6 +74,9 @@ static const char *bind_user_prefix[MAX_USERS] = { "input_player16", }; +static int input_config_vid[MAX_USERS]; +static int input_config_pid[MAX_USERS]; + #define DECLARE_BIND(x, bind, desc) { true, 0, #x, desc, bind } #define DECLARE_META_BIND(level, x, bind, desc) { true, level, #x, desc, bind } @@ -532,3 +535,33 @@ const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned i return NULL; } +void input_config_set_pid(unsigned port, unsigned pid) +{ + input_config_pid[port] = pid; +} + +int32_t input_config_get_pid(unsigned port) +{ + return input_config_pid[port]; +} + +void input_config_set_vid(unsigned port, unsigned vid) +{ + input_config_vid[port] = vid; +} + +int32_t input_config_get_vid(unsigned port) +{ + return input_config_vid[port]; +} + +void input_config_reset(void) +{ + unsigned i; + + for (i = 0; i < MAX_USERS; i++) + { + input_config_vid[i] = 0; + input_config_pid[i] = 0; + } +} diff --git a/input/input_config.h b/input/input_config.h index bf7cc8793b..b5a8c829a8 100644 --- a/input/input_config.h +++ b/input/input_config.h @@ -77,4 +77,14 @@ const char *input_config_get_device_name(unsigned port); const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned id); +void input_config_set_pid(unsigned port, unsigned pid); + +int32_t input_config_get_pid(unsigned port); + +void input_config_set_vid(unsigned port, unsigned vid); + +int32_t input_config_get_vid(unsigned port); + +void input_config_reset(void); + #endif diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 060e21e466..66822d0fae 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -654,8 +654,9 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0); snprintf(tmp, sizeof(tmp), "Port #%d device VID/PID: %d/%d", - controller, settings->input.vid[controller], - settings->input.pid[controller]); + controller, + input_config_get_vid(controller), + input_config_get_pid(controller)); menu_entries_append_enum(info->list, tmp, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0); diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index fe0ed2b279..f6d57adb33 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -467,10 +467,8 @@ bool input_autoconfigure_connect( state->max_users = settings->input.max_users; input_config_set_device_name(state->idx, state->name); - - configuration_set_int(settings, settings->input.pid[state->idx], state->pid); - configuration_set_int(settings, settings->input.vid[state->idx], state->vid); - + input_config_set_pid(state->idx, state->pid); + input_config_set_vid(state->idx, state->vid); for (i = 0; i < RARCH_BIND_LIST_END; i++) {