mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	core: hid: Skip duplicated vibrations
This commit is contained in:
		
							parent
							
								
									3b1c2896d9
								
							
						
					
					
						commit
						ad4622da2c
					
				| @ -1245,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; | ||||
| @ -1276,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."); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user