summaryrefslogtreecommitdiffstats
path: root/src/hid_core/frontend/emulated_controller.cpp
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2024-02-24 19:13:47 +0100
committergerman77 <juangerman-13@hotmail.com>2024-02-24 19:19:51 +0100
commitca7f949ee84a7f15990c9e09f2de9ea54b8f997a (patch)
tree9632df004486acd6c28e2f4ff5dfdb463f8c0c43 /src/hid_core/frontend/emulated_controller.cpp
parentservice: set: Enable nfc and others by default and bump version (diff)
downloadyuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar.gz
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar.bz2
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar.lz
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar.xz
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.tar.zst
yuzu-ca7f949ee84a7f15990c9e09f2de9ea54b8f997a.zip
Diffstat (limited to 'src/hid_core/frontend/emulated_controller.cpp')
-rw-r--r--src/hid_core/frontend/emulated_controller.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/hid_core/frontend/emulated_controller.cpp b/src/hid_core/frontend/emulated_controller.cpp
index 5cd26819c..7664341bd 100644
--- a/src/hid_core/frontend/emulated_controller.cpp
+++ b/src/hid_core/frontend/emulated_controller.cpp
@@ -2,6 +2,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include <algorithm>
+#include <chrono>
#include <common/scope_exit.h>
#include "common/polyfill_ranges.h"
@@ -1287,6 +1288,22 @@ bool EmulatedController::SetVibration(DeviceIndex device_index, const VibrationV
return false;
}
+ if (!Settings::values.enable_accurate_vibrations.GetValue()) {
+ using std::chrono::duration_cast;
+ using std::chrono::milliseconds;
+ using std::chrono::steady_clock;
+
+ const auto now = steady_clock::now();
+
+ // Filter out non-zero vibrations that are within 15ms of each other.
+ if ((vibration.low_amplitude != 0.0f || vibration.high_amplitude != 0.0f) &&
+ duration_cast<milliseconds>(now - last_vibration_timepoint[index]) < milliseconds(15)) {
+ return false;
+ }
+
+ last_vibration_timepoint[index] = now;
+ }
+
// Exponential amplification is too strong at low amplitudes. Switch to a linear
// amplification if strength is set below 0.7f
const Common::Input::VibrationAmplificationType type =