mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
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:
@ -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
|
||||
|
@ -57,7 +57,7 @@ private:
|
||||
};
|
||||
|
||||
public:
|
||||
void UpdateInput() override;
|
||||
Core::DeviceRemoval UpdateInput() override;
|
||||
|
||||
Joystick(const LPDIRECTINPUTDEVICE8 device);
|
||||
~Joystick();
|
||||
|
@ -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
|
||||
|
@ -94,7 +94,7 @@ private:
|
||||
};
|
||||
|
||||
public:
|
||||
void UpdateInput() override;
|
||||
Core::DeviceRemoval UpdateInput() override;
|
||||
|
||||
KeyboardMouse(const LPDIRECTINPUTDEVICE8 kb_device, const LPDIRECTINPUTDEVICE8 mo_device);
|
||||
~KeyboardMouse();
|
||||
|
Reference in New Issue
Block a user