|
@@ -1733,7 +1733,14 @@ int SDL_RumbleJoystick(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint
|
|
|
retval = 0;
|
|
|
} else {
|
|
|
retval = joystick->driver->Rumble(joystick, low_frequency_rumble, high_frequency_rumble);
|
|
|
- joystick->rumble_resend = SDL_GetTicks() + SDL_RUMBLE_RESEND_MS;
|
|
|
+ if (retval == 0) {
|
|
|
+ joystick->rumble_resend = SDL_GetTicks() + SDL_RUMBLE_RESEND_MS;
|
|
|
+ if (joystick->rumble_resend == 0) {
|
|
|
+ joystick->rumble_resend = 1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ joystick->rumble_resend = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (retval == 0) {
|
|
@@ -2408,12 +2415,14 @@ void SDL_UpdateJoysticks(void)
|
|
|
#endif /* SDL_JOYSTICK_HIDAPI */
|
|
|
|
|
|
for (joystick = SDL_joysticks; joystick; joystick = joystick->next) {
|
|
|
- if (joystick->attached) {
|
|
|
- joystick->driver->Update(joystick);
|
|
|
+ if (!joystick->attached) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
- if (joystick->delayed_guide_button) {
|
|
|
- SDL_GamepadHandleDelayedGuideButton(joystick);
|
|
|
- }
|
|
|
+ joystick->driver->Update(joystick);
|
|
|
+
|
|
|
+ if (joystick->delayed_guide_button) {
|
|
|
+ SDL_GamepadHandleDelayedGuideButton(joystick);
|
|
|
}
|
|
|
|
|
|
now = SDL_GetTicks();
|