summaryrefslogtreecommitdiff
path: root/platform/windows
diff options
context:
space:
mode:
authorAndreas Haas <27thLiz@gmail.com>2020-07-31 20:16:51 +0200
committerAndreas Haas <27thLiz@gmail.com>2020-07-31 20:16:51 +0200
commit802a0316c56c954d10c0d7f0c7bb44f3298d2c8f (patch)
tree4c42ab7c4df2cd5451267c307270ed12dc285079 /platform/windows
parent7488b07220fc73df5ed4babf2c9bf53f2fa1bf0e (diff)
DirectInput: use correct joypad id
Previously `joypad_count` was used as the index into the d_joypads array when initializing a new gamepad. This caused the accidental override of an already connected device when a gamepad with a lower id was disconnected and connected again. fixes #17566
Diffstat (limited to 'platform/windows')
-rw-r--r--platform/windows/joypad_windows.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp
index 65caee3035..d1454c9096 100644
--- a/platform/windows/joypad_windows.cpp
+++ b/platform/windows/joypad_windows.cpp
@@ -146,8 +146,8 @@ bool JoypadWindows::setup_dinput_joypad(const DIDEVICEINSTANCE *instance) {
if (have_device(instance->guidInstance) || num == -1)
return false;
- d_joypads[joypad_count] = dinput_gamepad();
- dinput_gamepad *joy = &d_joypads[joypad_count];
+ d_joypads[num] = dinput_gamepad();
+ dinput_gamepad *joy = &d_joypads[num];
const DWORD devtype = (instance->dwDevType & 0xFF);
@@ -171,7 +171,7 @@ bool JoypadWindows::setup_dinput_joypad(const DIDEVICEINSTANCE *instance) {
WORD version = 0;
sprintf_s(uid, "%04x%04x%04x%04x%04x%04x%04x%04x", type, 0, vendor, 0, product, 0, version, 0);
- id_to_change = joypad_count;
+ id_to_change = num;
slider_count = 0;
joy->di_joy->SetDataFormat(&c_dfDIJoystick2);