Merge pull request #1412 from ggrtk/sdl-rumble-duration-fix

CommonHostInterface: Update rumble every frame regardless of change
This commit is contained in:
Connor McLaughlin 2021-01-09 00:17:46 +10:00 committed by GitHub
commit c6da182232
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 15 deletions

View File

@ -1055,16 +1055,10 @@ void CommonHostInterface::UpdateControllerRumble()
if (!controller) if (!controller)
continue; continue;
bool changed = false;
for (u32 i = 0; i < rumble.num_motors; i++) for (u32 i = 0; i < rumble.num_motors; i++)
{ rumble.last_strength[i] = controller->GetVibrationMotorStrength(i);
const float strength = controller->GetVibrationMotorStrength(i);
changed |= (strength != rumble.last_strength[i]);
rumble.last_strength[i] = strength;
}
if (changed) rumble.update_callback(rumble.last_strength.data(), rumble.num_motors);
rumble.update_callback(rumble.last_strength.data(), rumble.num_motors);
} }
} }
@ -1072,15 +1066,10 @@ void CommonHostInterface::StopControllerRumble()
{ {
for (ControllerRumbleState& rumble : m_controller_vibration_motors) for (ControllerRumbleState& rumble : m_controller_vibration_motors)
{ {
bool changed = false;
for (u32 i = 0; i < rumble.num_motors; i++) for (u32 i = 0; i < rumble.num_motors; i++)
{
changed |= (rumble.last_strength[i] != 0.0f);
rumble.last_strength[i] = 0.0f; rumble.last_strength[i] = 0.0f;
}
if (changed) rumble.update_callback(rumble.last_strength.data(), rumble.num_motors);
rumble.update_callback(rumble.last_strength.data(), rumble.num_motors);
} }
} }

View File

@ -710,7 +710,7 @@ void SDLControllerInterface::SetControllerRumbleStrength(int controller_index, c
return; return;
// we'll update before this duration is elapsed // we'll update before this duration is elapsed
static constexpr u32 DURATION = 1000; static constexpr u32 DURATION = 65535; // SDL_MAX_RUMBLE_DURATION_MS
#if SDL_VERSION_ATLEAST(2, 0, 9) #if SDL_VERSION_ATLEAST(2, 0, 9)
if (it->use_game_controller_rumble) if (it->use_game_controller_rumble)