From add7d26c3d7093994ae38f0997ac244c357d655a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 13 Jan 2017 04:40:44 +0100 Subject: [PATCH] Set device name for xinput/dinput even when autoconfig is disabled --- input/drivers_joypad/dinput_joypad.c | 15 ++++++++------- input/drivers_joypad/xinput_joypad.c | 17 ++++++++++------- input/input_config.c | 9 +++++++++ input/input_config.h | 2 ++ tasks/task_autodetect.c | 5 +---- 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/input/drivers_joypad/dinput_joypad.c b/input/drivers_joypad/dinput_joypad.c index f3d6d2e1e8..2d042703c9 100644 --- a/input/drivers_joypad/dinput_joypad.c +++ b/input/drivers_joypad/dinput_joypad.c @@ -263,13 +263,14 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p) if (!is_xinput_pad) #endif { - input_autoconfigure_connect( - dinput_joypad_name(g_joypad_cnt), - dinput_joypad_friendly_name(g_joypad_cnt), - dinput_joypad.ident, - g_joypad_cnt, - dinput_joypad_vid(g_joypad_cnt), - dinput_joypad_pid(g_joypad_cnt)); + if (!input_autoconfigure_connect( + dinput_joypad_name(g_joypad_cnt), + dinput_joypad_friendly_name(g_joypad_cnt), + dinput_joypad.ident, + g_joypad_cnt, + dinput_joypad_vid(g_joypad_cnt), + dinput_joypad_pid(g_joypad_cnt))) + input_config_set_device_name(g_joypad_cnt, dinput_joypad_name(g_joypad_cnt)); } #ifdef HAVE_XINPUT diff --git a/input/drivers_joypad/xinput_joypad.c b/input/drivers_joypad/xinput_joypad.c index ef2d720061..6f32fd7fb6 100644 --- a/input/drivers_joypad/xinput_joypad.c +++ b/input/drivers_joypad/xinput_joypad.c @@ -170,7 +170,7 @@ const char *xinput_joypad_name(unsigned pad) static bool xinput_joypad_init(void *data) { - unsigned i, autoconf_pad; + unsigned i, j; XINPUT_STATE dummy_state; const char *version = "1.4"; @@ -262,16 +262,19 @@ static bool xinput_joypad_init(void *data) return false; } - for (autoconf_pad = 0; autoconf_pad < MAX_USERS; autoconf_pad++) + for (j = 0; j < MAX_USERS; j++) { - if (pad_index_to_xuser_index(autoconf_pad) > -1) - input_autoconfigure_connect( - xinput_joypad_name(autoconf_pad), + if (pad_index_to_xuser_index(ij) > -1) + { + if (!input_autoconfigure_connect( + xinput_joypad_name(j), NULL, xinput_joypad.ident, - autoconf_pad, + j, 0, - 0); + 0)) + input_config_set_device_name(j, xinput_joypad_name(j)); + } } return true; diff --git a/input/input_config.c b/input/input_config.c index c438700fd7..7adf28dc2d 100644 --- a/input/input_config.c +++ b/input/input_config.c @@ -476,6 +476,15 @@ void input_config_get_bind_string(char *buf, const struct retro_keybind *bind, #endif } +void input_config_set_device_name(unsigned port, const char *name) +{ + settings_t *settings = config_get_ptr(); + if (!string_is_empty(name)) + strlcpy(settings->input.device_names[port], + name, + sizeof(settings->input.device_names[port])); +} + const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned id) { settings_t *settings = config_get_ptr(); diff --git a/input/input_config.h b/input/input_config.h index 4314ec37eb..c0e4dc8165 100644 --- a/input/input_config.h +++ b/input/input_config.h @@ -69,6 +69,8 @@ void input_config_parse_joy_axis(void *data, const char *prefix, unsigned input_config_label_to_key(const char *label); +void input_config_set_device_name(unsigned port, const char *name); + const struct retro_keybind *input_config_get_bind_auto(unsigned port, unsigned id); #endif diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index 3a07e2adc9..c6749ac351 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -409,10 +409,7 @@ bool input_autoconfigure_connect( state->pid = pid; state->max_users = settings->input.max_users; - if (!string_is_empty(state->name)) - strlcpy(settings->input.device_names[state->idx], - state->name, - sizeof(settings->input.device_names[state->idx])); + input_config_set_device_name(state->idx, state->name); settings->input.pid[state->idx] = state->pid; settings->input.vid[state->idx] = state->vid;