input: use buffers during button translation

This should reduce some random noise by assgning the values once instead of twice
This commit is contained in:
Megamouse 2021-08-29 08:56:22 +02:00
parent a33b2afe08
commit 977d729ee0
2 changed files with 8 additions and 4 deletions

View File

@ -555,8 +555,10 @@ void PadHandlerBase::get_mapping(const std::shared_ptr<PadDevice>& device, const
// Translate any corresponding keycodes to our normal DS3 buttons and triggers
for (auto& btn : pad->m_buttons)
{
btn.m_value = button_values[btn.m_keyCode];
TranslateButtonPress(device, btn.m_keyCode, btn.m_pressed, btn.m_value);
Button tmp = btn; // Using a buffer because the values can change during translation
tmp.m_value = button_values[btn.m_keyCode];
TranslateButtonPress(device, tmp.m_keyCode, tmp.m_pressed, tmp.m_value);
btn = tmp;
}
// used to get the absolute value of an axis

View File

@ -782,8 +782,10 @@ void evdev_joystick_handler::get_mapping(const std::shared_ptr<PadDevice>& devic
}
}
button.m_value = static_cast<u16>(value);
TranslateButtonPress(m_dev, button_code, button.m_pressed, button.m_value);
Button tmp = button; // Using a buffer because the values can change during translation
tmp.m_value = static_cast<u16>(value);
TranslateButtonPress(m_dev, button_code, tmp.m_pressed, tmp.m_value);
button = tmp;
}
// Translate any corresponding keycodes to our two sticks. (ignoring thresholds for now)