From a883e69d7b1f2982304ba2ad8ed80a78a33def06 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 3 Apr 2026 16:07:49 -0700 Subject: [PATCH] Use the correct index for PS2 controllers Closes https://github.com/libsdl-org/SDL/pull/15294 (cherry picked from commit 41c3a910792bc913d3d530cab67711105c5d743e) --- src/joystick/ps2/SDL_sysjoystick.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/joystick/ps2/SDL_sysjoystick.c b/src/joystick/ps2/SDL_sysjoystick.c index e8ac2bbc2e..36a4dc09b0 100644 --- a/src/joystick/ps2/SDL_sysjoystick.c +++ b/src/joystick/ps2/SDL_sysjoystick.c @@ -258,8 +258,7 @@ static void PS2_InitializePad(int port, int slot) */ static bool PS2_JoystickOpen(SDL_Joystick *joystick, int device_index) { - int index = joystick->instance_id; - struct JoyInfo *info = &joyInfo[index]; + struct JoyInfo *info = &joyInfo[device_index]; if (!info->opened) { if (padPortOpen(info->port, info->slot, (void *)info->padBuf) > 0) { @@ -284,7 +283,7 @@ static bool PS2_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumb { char actAlign[6]; int res; - int index = joystick->instance_id; + int index = (int)(joystick->instance_id - 1); struct JoyInfo *info = &joyInfo[index]; if (!rumble_status(index)) { @@ -339,7 +338,7 @@ static void PS2_JoystickUpdate(SDL_Joystick *joystick) uint16_t mask, previous, current; struct padButtonStatus buttons; uint8_t all_axis[PS2_TOTAL_AXIS]; - int index = joystick->instance_id; + int index = (int)(joystick->instance_id - 1); struct JoyInfo *info = &joyInfo[index]; int state = padGetState(info->port, info->slot); Uint64 timestamp = SDL_GetTicksNS(); @@ -384,7 +383,7 @@ static void PS2_JoystickUpdate(SDL_Joystick *joystick) // Function to close a joystick after use static void PS2_JoystickClose(SDL_Joystick *joystick) { - int index = joystick->instance_id; + int index = (int)(joystick->instance_id - 1); struct JoyInfo *info = &joyInfo[index]; padPortClose(info->port, info->slot); info->opened = 0;