Merge pull request #8374 from german77/asnycvibrations
input_common: Make vibration request async
This commit is contained in:
		@@ -884,18 +884,42 @@ bool EmulatedController::SetVibration(std::size_t device_index, VibrationValue v
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool EmulatedController::TestVibration(std::size_t device_index) {
 | 
			
		||||
    static constexpr VibrationValue test_vibration = {
 | 
			
		||||
    if (device_index >= output_devices.size()) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    if (!output_devices[device_index]) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const auto player_index = NpadIdTypeToIndex(npad_id_type);
 | 
			
		||||
    const auto& player = Settings::values.players.GetValue()[player_index];
 | 
			
		||||
 | 
			
		||||
    if (!player.vibration_enabled) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const Common::Input::VibrationStatus test_vibration = {
 | 
			
		||||
        .low_amplitude = 0.001f,
 | 
			
		||||
        .low_frequency = 160.0f,
 | 
			
		||||
        .low_frequency = DEFAULT_VIBRATION_VALUE.low_frequency,
 | 
			
		||||
        .high_amplitude = 0.001f,
 | 
			
		||||
        .high_frequency = 320.0f,
 | 
			
		||||
        .high_frequency = DEFAULT_VIBRATION_VALUE.high_frequency,
 | 
			
		||||
        .type = Common::Input::VibrationAmplificationType::Test,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const Common::Input::VibrationStatus zero_vibration = {
 | 
			
		||||
        .low_amplitude = DEFAULT_VIBRATION_VALUE.low_amplitude,
 | 
			
		||||
        .low_frequency = DEFAULT_VIBRATION_VALUE.low_frequency,
 | 
			
		||||
        .high_amplitude = DEFAULT_VIBRATION_VALUE.high_amplitude,
 | 
			
		||||
        .high_frequency = DEFAULT_VIBRATION_VALUE.high_frequency,
 | 
			
		||||
        .type = Common::Input::VibrationAmplificationType::Test,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Send a slight vibration to test for rumble support
 | 
			
		||||
    SetVibration(device_index, test_vibration);
 | 
			
		||||
    output_devices[device_index]->SetVibration(test_vibration);
 | 
			
		||||
 | 
			
		||||
    // Stop any vibration and return the result
 | 
			
		||||
    return SetVibration(device_index, DEFAULT_VIBRATION_VALUE);
 | 
			
		||||
    return output_devices[device_index]->SetVibration(zero_vibration) ==
 | 
			
		||||
           Common::Input::VibrationError::None;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool EmulatedController::SetPollingMode(Common::Input::PollingMode polling_mode) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user