diff options
author | Fernando S <fsahmkow27@gmail.com> | 2023-09-29 13:36:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-29 13:36:57 +0200 |
commit | d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc (patch) | |
tree | 936eb95eb694f525ba7daaabc89404fc4a5ea557 /src/core/hid/emulated_controller.cpp | |
parent | Merge pull request #11622 from liamwhite/qcr-reg1 (diff) | |
parent | Reduce core timing mutex contention (diff) | |
download | yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar.gz yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar.bz2 yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar.lz yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar.xz yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.tar.zst yuzu-d6b3e7f195dcf9a154f4e1ff84c6a1b46ad5bdfc.zip |
Diffstat (limited to 'src/core/hid/emulated_controller.cpp')
-rw-r--r-- | src/core/hid/emulated_controller.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 94bd656fe..2af3f06fc 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp @@ -542,6 +542,7 @@ void EmulatedController::UnloadInput() { } void EmulatedController::EnableConfiguration() { + std::scoped_lock lock{connect_mutex, npad_mutex}; is_configuring = true; tmp_is_connected = is_connected; tmp_npad_type = npad_type; @@ -1556,7 +1557,7 @@ void EmulatedController::Connect(bool use_temporary_value) { auto trigger_guard = SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Connected, !is_configuring); }); - std::scoped_lock lock{mutex}; + std::scoped_lock lock{connect_mutex, mutex}; if (is_configuring) { tmp_is_connected = true; return; @@ -1572,7 +1573,7 @@ void EmulatedController::Connect(bool use_temporary_value) { void EmulatedController::Disconnect() { auto trigger_guard = SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Disconnected, !is_configuring); }); - std::scoped_lock lock{mutex}; + std::scoped_lock lock{connect_mutex, mutex}; if (is_configuring) { tmp_is_connected = false; return; @@ -1586,7 +1587,7 @@ void EmulatedController::Disconnect() { } bool EmulatedController::IsConnected(bool get_temporary_value) const { - std::scoped_lock lock{mutex}; + std::scoped_lock lock{connect_mutex}; if (get_temporary_value && is_configuring) { return tmp_is_connected; } @@ -1599,7 +1600,7 @@ NpadIdType EmulatedController::GetNpadIdType() const { } NpadStyleIndex EmulatedController::GetNpadStyleIndex(bool get_temporary_value) const { - std::scoped_lock lock{mutex}; + std::scoped_lock lock{npad_mutex}; if (get_temporary_value && is_configuring) { return tmp_npad_type; } @@ -1609,7 +1610,7 @@ NpadStyleIndex EmulatedController::GetNpadStyleIndex(bool get_temporary_value) c void EmulatedController::SetNpadStyleIndex(NpadStyleIndex npad_type_) { auto trigger_guard = SCOPE_GUARD({ TriggerOnChange(ControllerTriggerType::Type, !is_configuring); }); - std::scoped_lock lock{mutex}; + std::scoped_lock lock{mutex, npad_mutex}; if (is_configuring) { if (tmp_npad_type == npad_type_) { |