mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-05 09:52:39 +00:00
DolphinQt: Rework TAS input threading, part 1 (buttons)
This gets rid of a blocking operation, improving performance and fixing https://bugs.dolphin-emu.org/issues/12893. This also makes us no longer directly access the state of certain UI elements from the CPU thread, which probably wasn't thread-safe but doesn't seem to have caused any observable issues so far.
This commit is contained in:
parent
95ce41ac56
commit
3eac1fc284
8 changed files with 140 additions and 15 deletions
|
@ -239,18 +239,7 @@ std::optional<ControlState> TASInputWindow::GetButton(TASCheckBox* checkbox,
|
|||
{
|
||||
const bool pressed = std::llround(controller_state) > 0;
|
||||
if (m_use_controller->isChecked())
|
||||
{
|
||||
if (pressed)
|
||||
{
|
||||
m_checkbox_set_by_controller[checkbox] = true;
|
||||
QueueOnObjectBlocking(checkbox, [checkbox] { checkbox->setChecked(true); });
|
||||
}
|
||||
else if (m_checkbox_set_by_controller.count(checkbox) && m_checkbox_set_by_controller[checkbox])
|
||||
{
|
||||
m_checkbox_set_by_controller[checkbox] = false;
|
||||
QueueOnObjectBlocking(checkbox, [checkbox] { checkbox->setChecked(false); });
|
||||
}
|
||||
}
|
||||
checkbox->OnControllerValueChanged(pressed);
|
||||
|
||||
return checkbox->GetValue() ? 1.0 : 0.0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue