From ad602924a40577f1ca96f52bd3be31f82311e847 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 5 Nov 2024 00:07:27 -0800
Subject: [PATCH] Support multiple joystick buttons bound to the same gamepad
button
(cherry picked from commit ed943318e2bac41aefbeab414d0e218e7a78793d)
(cherry picked from commit 74ff82f4a2a2676d7d03a43b127b9a3337c76604)
---
src/joystick/SDL_gamecontroller.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c
index 9bd89d0a7b5a7..d3a4668a623b3 100644
--- a/src/joystick/SDL_gamecontroller.c
+++ b/src/joystick/SDL_gamecontroller.c
@@ -2364,23 +2364,19 @@ Uint8 SDL_GameControllerGetButton(SDL_GameController *gamecontroller, SDL_GameCo
if (binding->input.axis.axis_min < binding->input.axis.axis_max) {
valid_input_range = (value >= binding->input.axis.axis_min && value <= binding->input.axis.axis_max);
if (valid_input_range) {
- retval = (value >= threshold) ? SDL_PRESSED : SDL_RELEASED;
- break;
+ retval |= (value >= threshold) ? SDL_PRESSED : SDL_RELEASED;
}
} else {
valid_input_range = (value >= binding->input.axis.axis_max && value <= binding->input.axis.axis_min);
if (valid_input_range) {
- retval = (value <= threshold) ? SDL_PRESSED : SDL_RELEASED;
- break;
+ retval |= (value <= threshold) ? SDL_PRESSED : SDL_RELEASED;
}
}
} else if (binding->inputType == SDL_CONTROLLER_BINDTYPE_BUTTON) {
- retval = SDL_JoystickGetButton(gamecontroller->joystick, binding->input.button);
- break;
+ retval |= SDL_JoystickGetButton(gamecontroller->joystick, binding->input.button);
} else if (binding->inputType == SDL_CONTROLLER_BINDTYPE_HAT) {
int hat_mask = SDL_JoystickGetHat(gamecontroller->joystick, binding->input.hat.hat);
- retval = (hat_mask & binding->input.hat.hat_mask) ? SDL_PRESSED : SDL_RELEASED;
- break;
+ retval |= (hat_mask & binding->input.hat.hat_mask) ? SDL_PRESSED : SDL_RELEASED;
}
}
}