diff options
Diffstat (limited to 'src/input_common/drivers')
| -rw-r--r-- | src/input_common/drivers/gc_adapter.cpp | 8 | ||||
| -rw-r--r-- | src/input_common/drivers/gc_adapter.h | 2 | ||||
| -rw-r--r-- | src/input_common/drivers/sdl_driver.cpp | 8 | ||||
| -rw-r--r-- | src/input_common/drivers/sdl_driver.h | 2 |
4 files changed, 14 insertions, 6 deletions
diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp index 6721ba4f7..2aa5a16a6 100644 --- a/src/input_common/drivers/gc_adapter.cpp +++ b/src/input_common/drivers/gc_adapter.cpp | |||
| @@ -322,13 +322,17 @@ bool GCAdapter::GetGCEndpoint(libusb_device* device) { | |||
| 322 | return true; | 322 | return true; |
| 323 | } | 323 | } |
| 324 | 324 | ||
| 325 | bool GCAdapter::SetRumble(const PadIdentifier& identifier, const Input::VibrationStatus vibration) { | 325 | Input::VibrationError GCAdapter::SetRumble(const PadIdentifier& identifier, const Input::VibrationStatus vibration) { |
| 326 | const auto mean_amplitude = (vibration.low_amplitude + vibration.high_amplitude) * 0.5f; | 326 | const auto mean_amplitude = (vibration.low_amplitude + vibration.high_amplitude) * 0.5f; |
| 327 | const auto processed_amplitude = | 327 | const auto processed_amplitude = |
| 328 | static_cast<u8>((mean_amplitude + std::pow(mean_amplitude, 0.3f)) * 0.5f * 0x8); | 328 | static_cast<u8>((mean_amplitude + std::pow(mean_amplitude, 0.3f)) * 0.5f * 0x8); |
| 329 | 329 | ||
| 330 | pads[identifier.port].rumble_amplitude = processed_amplitude; | 330 | pads[identifier.port].rumble_amplitude = processed_amplitude; |
| 331 | return rumble_enabled; | 331 | |
| 332 | if (!rumble_enabled) { | ||
| 333 | return Input::VibrationError::Disabled; | ||
| 334 | } | ||
| 335 | return Input::VibrationError::None; | ||
| 332 | } | 336 | } |
| 333 | 337 | ||
| 334 | void GCAdapter::UpdateVibrations() { | 338 | void GCAdapter::UpdateVibrations() { |
diff --git a/src/input_common/drivers/gc_adapter.h b/src/input_common/drivers/gc_adapter.h index c0bf1ed7a..dd23dd9f3 100644 --- a/src/input_common/drivers/gc_adapter.h +++ b/src/input_common/drivers/gc_adapter.h | |||
| @@ -24,7 +24,7 @@ public: | |||
| 24 | explicit GCAdapter(const std::string input_engine_); | 24 | explicit GCAdapter(const std::string input_engine_); |
| 25 | ~GCAdapter(); | 25 | ~GCAdapter(); |
| 26 | 26 | ||
| 27 | bool SetRumble(const PadIdentifier& identifier, | 27 | Input::VibrationError SetRumble(const PadIdentifier& identifier, |
| 28 | const Input::VibrationStatus vibration) override; | 28 | const Input::VibrationStatus vibration) override; |
| 29 | 29 | ||
| 30 | /// Used for automapping features | 30 | /// Used for automapping features |
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index efb4a2106..f7f03c5f2 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp | |||
| @@ -506,7 +506,8 @@ std::vector<Common::ParamPackage> SDLDriver::GetInputDevices() const { | |||
| 506 | } | 506 | } |
| 507 | return devices; | 507 | return devices; |
| 508 | } | 508 | } |
| 509 | bool SDLDriver::SetRumble(const PadIdentifier& identifier, const Input::VibrationStatus vibration) { | 509 | Input::VibrationError SDLDriver::SetRumble(const PadIdentifier& identifier, |
| 510 | const Input::VibrationStatus vibration) { | ||
| 510 | const auto joystick = | 511 | const auto joystick = |
| 511 | GetSDLJoystickByGUID(identifier.guid.Format(), static_cast<int>(identifier.port)); | 512 | GetSDLJoystickByGUID(identifier.guid.Format(), static_cast<int>(identifier.port)); |
| 512 | const auto process_amplitude = [](f32 amplitude) { | 513 | const auto process_amplitude = [](f32 amplitude) { |
| @@ -519,7 +520,10 @@ bool SDLDriver::SetRumble(const PadIdentifier& identifier, const Input::Vibratio | |||
| 519 | .high_frequency = vibration.high_frequency, | 520 | .high_frequency = vibration.high_frequency, |
| 520 | }; | 521 | }; |
| 521 | 522 | ||
| 522 | return joystick->RumblePlay(new_vibration); | 523 | if (!joystick->RumblePlay(new_vibration)) { |
| 524 | return Input::VibrationError::Unknown; | ||
| 525 | } | ||
| 526 | return Input::VibrationError::None; | ||
| 523 | } | 527 | } |
| 524 | Common::ParamPackage SDLDriver::BuildAnalogParamPackageForButton(int port, std::string guid, | 528 | Common::ParamPackage SDLDriver::BuildAnalogParamPackageForButton(int port, std::string guid, |
| 525 | s32 axis, float value) const { | 529 | s32 axis, float value) const { |
diff --git a/src/input_common/drivers/sdl_driver.h b/src/input_common/drivers/sdl_driver.h index d8d350184..f66b33c77 100644 --- a/src/input_common/drivers/sdl_driver.h +++ b/src/input_common/drivers/sdl_driver.h | |||
| @@ -58,7 +58,7 @@ public: | |||
| 58 | std::string GetHatButtonName(u8 direction_value) const override; | 58 | std::string GetHatButtonName(u8 direction_value) const override; |
| 59 | u8 GetHatButtonId(const std::string direction_name) const override; | 59 | u8 GetHatButtonId(const std::string direction_name) const override; |
| 60 | 60 | ||
| 61 | bool SetRumble(const PadIdentifier& identifier, | 61 | Input::VibrationError SetRumble(const PadIdentifier& identifier, |
| 62 | const Input::VibrationStatus vibration) override; | 62 | const Input::VibrationStatus vibration) override; |
| 63 | 63 | ||
| 64 | private: | 64 | private: |