Fixed reading input from the Razer Atrox Arcade Stick using Windows Gaming Input (cherry picked from commit 172cfca51332a845abf9c141ae56aa121fe4ada5)
diff --git a/src/joystick/windows/SDL_windows_gaming_input.c b/src/joystick/windows/SDL_windows_gaming_input.c
index 06e555c..f9e7e42 100644
--- a/src/joystick/windows/SDL_windows_gaming_input.c
+++ b/src/joystick/windows/SDL_windows_gaming_input.c
@@ -837,15 +837,18 @@ static void WGI_JoystickUpdate(SDL_Joystick *joystick)
}
hr = __x_ABI_CWindows_CGaming_CInput_CIRawGameController_GetCurrentReading(hwdata->controller, nbuttons, buttons, nhats, hats, naxes, axes, ×tamp);
- if (SUCCEEDED(hr) && timestamp != hwdata->timestamp) {
+ if (SUCCEEDED(hr) && (!timestamp || timestamp != hwdata->timestamp)) {
UINT32 i;
- SDL_bool all_zero = SDL_TRUE;
+ SDL_bool all_zero = SDL_FALSE;
/* The axes are all zero when the application loses focus */
- for (i = 0; i < naxes; ++i) {
- if (axes[i] != 0.0f) {
- all_zero = SDL_FALSE;
- break;
+ if (naxes > 0) {
+ all_zero = SDL_TRUE;
+ for (i = 0; i < naxes; ++i) {
+ if (axes[i] != 0.0f) {
+ all_zero = SDL_FALSE;
+ break;
+ }
}
}
if (all_zero) {