Merge pull request #10712 from tellowkrinkle/ControllerLocks

InputCommon/ControllerEmu: Use more locks
This commit is contained in:
Admiral H. Curtiss 2022-07-05 11:39:48 +02:00 committed by GitHub
commit 24498ca315
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 0 deletions

View File

@ -40,6 +40,8 @@ std::unique_lock<std::recursive_mutex> EmulatedController::GetStateLock()
void EmulatedController::UpdateReferences(const ControllerInterface& devi) void EmulatedController::UpdateReferences(const ControllerInterface& devi)
{ {
const auto lock = GetStateLock();
m_default_device_is_connected = devi.HasConnectedDevice(m_default_device); m_default_device_is_connected = devi.HasConnectedDevice(m_default_device);
ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars); ciface::ExpressionParser::ControlEnvironment env(devi, GetDefaultDevice(), m_expression_vars);
@ -138,6 +140,7 @@ void EmulatedController::SetDefaultDevice(ciface::Core::DeviceQualifier devq)
void EmulatedController::LoadConfig(IniFile::Section* sec, const std::string& base) void EmulatedController::LoadConfig(IniFile::Section* sec, const std::string& base)
{ {
const auto lock = GetStateLock();
std::string defdev = GetDefaultDevice().ToString(); std::string defdev = GetDefaultDevice().ToString();
if (base.empty()) if (base.empty())
{ {
@ -151,6 +154,7 @@ void EmulatedController::LoadConfig(IniFile::Section* sec, const std::string& ba
void EmulatedController::SaveConfig(IniFile::Section* sec, const std::string& base) void EmulatedController::SaveConfig(IniFile::Section* sec, const std::string& base)
{ {
const auto lock = GetStateLock();
const std::string defdev = GetDefaultDevice().ToString(); const std::string defdev = GetDefaultDevice().ToString();
if (base.empty()) if (base.empty())
sec->Set(/*std::string(" ") +*/ base + "Device", defdev, ""); sec->Set(/*std::string(" ") +*/ base + "Device", defdev, "");
@ -161,6 +165,7 @@ void EmulatedController::SaveConfig(IniFile::Section* sec, const std::string& ba
void EmulatedController::LoadDefaults(const ControllerInterface& ciface) void EmulatedController::LoadDefaults(const ControllerInterface& ciface)
{ {
const auto lock = GetStateLock();
// load an empty inifile section, clears everything // load an empty inifile section, clears everything
IniFile::Section sec; IniFile::Section sec;
LoadConfig(&sec); LoadConfig(&sec);