From f4e5f896a213de063897660f7cabd6a9032e5e8d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 25 Apr 2017 16:57:44 +0200 Subject: [PATCH] Move input.device_name_index to task_autodetect and move it outside of settings struct --- configuration.h | 1 - menu/menu_displaylist.c | 5 +++-- menu/menu_setting.c | 2 +- tasks/task_autodetect.c | 26 ++++++++++++++------------ tasks/tasks_internal.h | 2 ++ 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/configuration.h b/configuration.h index 57e2734410..a11ad9e655 100644 --- a/configuration.h +++ b/configuration.h @@ -292,7 +292,6 @@ typedef struct settings float axis_threshold; unsigned joypad_map[MAX_USERS]; unsigned device[MAX_USERS]; - unsigned device_name_index[MAX_USERS]; bool autodetect_enable; unsigned turbo_period; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 66822d0fae..fe1b8d8ed8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -648,8 +648,9 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) if (input_is_autoconfigured(controller)) { snprintf(tmp, sizeof(tmp), "Port #%d device name: %s (#%d)", - controller, input_config_get_device_name(controller), - settings->input.device_name_index[controller]); + controller, + input_config_get_device_name(controller), + input_autoconfigure_get_device_name_index(controller)); menu_entries_append_enum(info->list, tmp, "", MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 30ba390b69..c450b099a4 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1430,7 +1430,7 @@ static void get_string_representation_bind_device(void * data, char *s, snprintf(s, len, "%s (#%u)", device_name, - settings->input.device_name_index[map]); + input_autoconfigure_get_device_name_index(map)); else snprintf(s, len, "%s (%s #%u)", diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index f6d57adb33..ae8e1e2520 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -52,18 +52,16 @@ typedef struct autoconfig_params static bool input_autoconfigured[MAX_USERS]; static struct retro_keybind input_autoconf_binds[MAX_USERS][RARCH_BIND_LIST_END]; +static unsigned input_device_name_index[MAX_USERS]; /* Adds an index for devices with the same name, * so they can be identified in the GUI. */ static void input_autoconfigure_joypad_reindex_devices(autoconfig_params_t *params) { unsigned i; - settings_t *settings = config_get_ptr(); for(i = 0; i < params->max_users; i++) - { - configuration_set_uint(settings, settings->input.device_name_index[i], 0); - } + input_device_name_index[i] = 0; for(i = 0; i < params->max_users; i++) { @@ -74,11 +72,8 @@ static void input_autoconfigure_joypad_reindex_devices(autoconfig_params_t *para for(j = 0; j < params->max_users; j++) { if(string_is_equal(tmp, input_config_get_device_name(j)) - && settings->input.device_name_index[i] == 0) - { - configuration_set_uint(settings, settings->input.device_name_index[j], k); - k++; - } + && input_device_name_index[i] == 0) + input_device_name_index[j] = k++; } } } @@ -421,7 +416,8 @@ void input_autoconfigure_reset(void) input_autoconf_binds[i][j].joykey = NO_BTN; input_autoconf_binds[i][j].joyaxis = AXIS_NONE; } - input_autoconfigured[i] = 0; + input_device_name_index[i] = 0; + input_autoconfigured[i] = 0; } } @@ -430,6 +426,11 @@ bool input_is_autoconfigured(unsigned i) return input_autoconfigured[i]; } +unsigned input_autoconfigure_get_device_name_index(unsigned i) +{ + return input_device_name_index[i]; +} + bool input_autoconfigure_connect( const char *name, const char *display_name, @@ -442,6 +443,7 @@ bool input_autoconfigure_connect( retro_task_t *task = (retro_task_t*)calloc(1, sizeof(*task)); autoconfig_params_t *state = (autoconfig_params_t*)calloc(1, sizeof(*state)); settings_t *settings = config_get_ptr(); + const char *dir_autoconf = settings->directory.autoconfig; if (!task || !state || !settings->input.autodetect_enable) goto error; @@ -456,9 +458,9 @@ bool input_autoconfigure_connect( if (!string_is_empty(driver)) strlcpy(state->driver, driver, sizeof(state->driver)); - if (!string_is_empty(settings->directory.autoconfig)) + if (!string_is_empty(dir_autoconf)) strlcpy(state->autoconfig_directory, - settings->directory.autoconfig, + dir_autoconf, sizeof(state->autoconfig_directory)); state->idx = idx; diff --git a/tasks/tasks_internal.h b/tasks/tasks_internal.h index 646bbea5a5..b165a93eef 100644 --- a/tasks/tasks_internal.h +++ b/tasks/tasks_internal.h @@ -226,6 +226,8 @@ input_autoconfigure_get_specific_bind(unsigned i, unsigned j); struct retro_keybind *input_autoconfigure_get_binds(unsigned i); +unsigned input_autoconfigure_get_device_name_index(unsigned i); + void input_autoconfigure_reset(void); bool input_autoconfigure_connect(