Input: Improve Controller Interface devices threading

This specific issue was already addressed by https://github.com/dolphin-emu/dolphin/pull/11635
though I felt like there was something more we could do, and wasn't too happy with the
likelihood of devices update calls being skipped (due to `m_devices_population_mutex` being locked).
This commit is contained in:
Filoppi
2023-05-24 22:58:30 +03:00
parent e498759d14
commit e456bef163
25 changed files with 125 additions and 58 deletions

View File

@ -222,7 +222,7 @@ bool Joystick::IsValid() const
return SUCCEEDED(m_device->Acquire());
}
void Joystick::UpdateInput()
Core::DeviceRemoval Joystick::UpdateInput()
{
HRESULT hr = 0;
@ -261,6 +261,8 @@ void Joystick::UpdateInput()
// try reacquire if input lost
if (DIERR_INPUTLOST == hr || DIERR_NOTACQUIRED == hr)
m_device->Acquire();
return Core::DeviceRemoval::Keep;
}
// get name

View File

@ -57,7 +57,7 @@ private:
};
public:
void UpdateInput() override;
Core::DeviceRemoval UpdateInput() override;
Joystick(const LPDIRECTINPUTDEVICE8 device);
~Joystick();

View File

@ -205,7 +205,7 @@ void KeyboardMouse::UpdateCursorInput()
m_state_in.cursor.y = (ControlState(point.y) / win_height * 2 - 1) * window_scale.y;
}
void KeyboardMouse::UpdateInput()
Core::DeviceRemoval KeyboardMouse::UpdateInput()
{
UpdateCursorInput();
@ -254,6 +254,8 @@ void KeyboardMouse::UpdateInput()
else
INFO_LOG_FMT(CONTROLLERINTERFACE, "Keyboard device failed to re-acquire, we'll retry later");
}
return Core::DeviceRemoval::Keep;
}
std::string KeyboardMouse::GetName() const

View File

@ -94,7 +94,7 @@ private:
};
public:
void UpdateInput() override;
Core::DeviceRemoval UpdateInput() override;
KeyboardMouse(const LPDIRECTINPUTDEVICE8 kb_device, const LPDIRECTINPUTDEVICE8 mo_device);
~KeyboardMouse();