From 0c749a61810546560b0ab8155dbc1964687fde2e Mon Sep 17 00:00:00 2001 From: dibas Date: Sat, 12 Dec 2015 20:41:52 +0100 Subject: [PATCH] Implemented additional checks for Nintendo controllers. --- input/connect/joypad_connection.c | 47 +++++++++++++++++-------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/input/connect/joypad_connection.c b/input/connect/joypad_connection.c index 83d8df8944..0df719e996 100644 --- a/input/connect/joypad_connection.c +++ b/input/connect/joypad_connection.c @@ -81,30 +81,35 @@ int32_t pad_connection_pad_init(joypad_connection_t *joyconn, pad_connection_interface_t *iface; } pad_map[] = { - { "Nintendo RVL-CNT-01-UC", 1406, 816, &pad_connection_wiiupro }, - { "Nintendo RVL-CNT-01", 1406, 816, &pad_connection_wii }, - { "Wireless Controller", 1356, 1476, &pad_connection_ps4 }, - { "PLAYSTATION(R)3 Controller", 1356, 616, &pad_connection_ps3 }, - { 0, 0} + { "Nintendo RVL-CNT-01", 1406, 816, &pad_connection_wii }, + { "Nintendo RVL-CNT-01-UC", 1406, 816, &pad_connection_wiiupro }, + { "Wireless Controller", 1356, 1476, &pad_connection_ps4 }, + { "PLAYSTATION(R)3 Controller", 1356, 616, &pad_connection_ps3 }, + { 0, 0} }; - + if (s) { - unsigned i; - - for (i = 0; name && pad_map[i].name; i++) - { - const char *name_match = strstr(name, pad_map[i].name); - - if (name_match || (pad_map[i].vid == vid && pad_map[i].pid == pid)) - { - s->iface = pad_map[i].iface; - s->data = s->iface->init(data, pad, ptr); - s->connected = true; - - return pad; - } - } + unsigned i; + + for (i = 0; name && pad_map[i].name; i++) + { + const char *name_match = strstr(pad_map[i].name, name); + + if(pad_map[i].vid == 1406 && pad_map[i].pid == 816) // Never change, Nintendo. + { + if(strcmp(pad_map[i].name, name) != 0) + continue; + } + + if (name_match || (pad_map[i].vid == vid && pad_map[i].pid == pid)) + { + s->iface = pad_map[i].iface; + s->data = s->iface->init(data, pad, ptr); + s->connected = true; + return pad; + } + } } }