Browse Source
Merge pull request #12769 from german77/no-log
core: hid: Reduce controller requests
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with
26 additions and
4 deletions
-
src/hid_core/frontend/emulated_controller.cpp
-
src/hid_core/frontend/emulated_controller.h
-
src/hid_core/hid_types.h
|
|
|
@ -110,7 +110,11 @@ void EmulatedController::ReloadFromSettings() { |
|
|
|
original_npad_type = npad_type; |
|
|
|
} |
|
|
|
|
|
|
|
// Disable special features before disconnecting
|
|
|
|
if (controller.right_polling_mode != Common::Input::PollingMode::Active) { |
|
|
|
SetPollingMode(EmulatedDeviceIndex::RightIndex, Common::Input::PollingMode::Active); |
|
|
|
} |
|
|
|
|
|
|
|
Disconnect(); |
|
|
|
if (player.connected) { |
|
|
|
Connect(); |
|
|
|
@ -1241,7 +1245,12 @@ bool EmulatedController::SetVibration(DeviceIndex device_index, const VibrationV |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
last_vibration_value = vibration; |
|
|
|
// Skip duplicated vibrations
|
|
|
|
if (last_vibration_value[index] == vibration) { |
|
|
|
return Settings::values.vibration_enabled.GetValue(); |
|
|
|
} |
|
|
|
|
|
|
|
last_vibration_value[index] = vibration; |
|
|
|
|
|
|
|
if (!Settings::values.vibration_enabled) { |
|
|
|
return false; |
|
|
|
@ -1272,7 +1281,10 @@ bool EmulatedController::SetVibration(DeviceIndex device_index, const VibrationV |
|
|
|
} |
|
|
|
|
|
|
|
VibrationValue EmulatedController::GetActualVibrationValue(DeviceIndex device_index) const { |
|
|
|
return last_vibration_value; |
|
|
|
if (device_index >= DeviceIndex::MaxDeviceIndex) { |
|
|
|
return Core::HID::DEFAULT_VIBRATION_VALUE; |
|
|
|
} |
|
|
|
return last_vibration_value[static_cast<std::size_t>(device_index)]; |
|
|
|
} |
|
|
|
|
|
|
|
bool EmulatedController::IsVibrationEnabled(std::size_t device_index) { |
|
|
|
|
|
|
|
@ -581,7 +581,8 @@ private: |
|
|
|
f32 motion_sensitivity{Core::HID::MotionInput::IsAtRestStandard}; |
|
|
|
u32 turbo_button_state{0}; |
|
|
|
std::size_t nfc_handles{0}; |
|
|
|
VibrationValue last_vibration_value{DEFAULT_VIBRATION_VALUE}; |
|
|
|
std::array<VibrationValue, 2> last_vibration_value{DEFAULT_VIBRATION_VALUE, |
|
|
|
DEFAULT_VIBRATION_VALUE}; |
|
|
|
|
|
|
|
// Temporary values to avoid doing changes while the controller is in configuring mode |
|
|
|
NpadStyleIndex tmp_npad_type{NpadStyleIndex::None}; |
|
|
|
|
|
|
|
@ -639,6 +639,15 @@ struct VibrationValue { |
|
|
|
f32 low_frequency{}; |
|
|
|
f32 high_amplitude{}; |
|
|
|
f32 high_frequency{}; |
|
|
|
bool operator==(const VibrationValue& b) { |
|
|
|
if (low_amplitude != b.low_amplitude || high_amplitude != b.high_amplitude) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (low_frequency != b.low_amplitude || high_frequency != b.high_frequency) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
}; |
|
|
|
static_assert(sizeof(VibrationValue) == 0x10, "VibrationValue has incorrect size."); |
|
|
|
|
|
|
|
|