diff --git a/src/joystick/SDL_gamepad.c b/src/joystick/SDL_gamepad.c index 3c5e7edd94..0ad193f5dc 100644 --- a/src/joystick/SDL_gamepad.c +++ b/src/joystick/SDL_gamepad.c @@ -2741,7 +2741,7 @@ bool SDL_GamepadHasAxis(SDL_Gamepad *gamepad, SDL_GamepadAxis axis) CHECK_GAMEPAD_MAGIC(gamepad, false); for (i = 0; i < gamepad->num_bindings; ++i) { - SDL_GamepadBinding *binding = &gamepad->bindings[i]; + const SDL_GamepadBinding *binding = &gamepad->bindings[i]; if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS && binding->output.axis.axis == axis) { result = true; break; @@ -2767,7 +2767,7 @@ Sint16 SDL_GetGamepadAxis(SDL_Gamepad *gamepad, SDL_GamepadAxis axis) CHECK_GAMEPAD_MAGIC(gamepad, 0); for (i = 0; i < gamepad->num_bindings; ++i) { - SDL_GamepadBinding *binding = &gamepad->bindings[i]; + const SDL_GamepadBinding *binding = &gamepad->bindings[i]; if (binding->output_type == SDL_GAMEPAD_BINDTYPE_AXIS && binding->output.axis.axis == axis) { int value = 0; bool valid_input_range; @@ -2831,7 +2831,7 @@ bool SDL_GamepadHasButton(SDL_Gamepad *gamepad, SDL_GamepadButton button) CHECK_GAMEPAD_MAGIC(gamepad, false); for (i = 0; i < gamepad->num_bindings; ++i) { - SDL_GamepadBinding *binding = &gamepad->bindings[i]; + const SDL_GamepadBinding *binding = &gamepad->bindings[i]; if (binding->output_type == SDL_GAMEPAD_BINDTYPE_BUTTON && binding->output.button == button) { result = true; break; @@ -2857,7 +2857,7 @@ bool SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button) CHECK_GAMEPAD_MAGIC(gamepad, false); for (i = 0; i < gamepad->num_bindings; ++i) { - SDL_GamepadBinding *binding = &gamepad->bindings[i]; + const SDL_GamepadBinding *binding = &gamepad->bindings[i]; if (binding->output_type == SDL_GAMEPAD_BINDTYPE_BUTTON && binding->output.button == button) { if (binding->input_type == SDL_GAMEPAD_BINDTYPE_AXIS) { bool valid_input_range; @@ -2867,23 +2867,19 @@ bool SDL_GetGamepadButton(SDL_Gamepad *gamepad, SDL_GamepadButton button) 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) { - result = (value >= threshold); - break; + result |= (value >= threshold); } } else { valid_input_range = (value >= binding->input.axis.axis_max && value <= binding->input.axis.axis_min); if (valid_input_range) { - result = (value <= threshold); - break; + result |= (value <= threshold); } } } else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_BUTTON) { - result = SDL_GetJoystickButton(gamepad->joystick, binding->input.button); - break; + result |= SDL_GetJoystickButton(gamepad->joystick, binding->input.button); } else if (binding->input_type == SDL_GAMEPAD_BINDTYPE_HAT) { int hat_mask = SDL_GetJoystickHat(gamepad->joystick, binding->input.hat.hat); - result = ((hat_mask & binding->input.hat.hat_mask) != 0); - break; + result |= ((hat_mask & binding->input.hat.hat_mask) != 0); } } }