exclusive_monitor: Don't lock when disabled

This commit is contained in:
Merry
2022-11-27 23:44:31 +00:00
parent 6b64557ad6
commit 2c8711a3da
3 changed files with 82 additions and 0 deletions

View File

@@ -14,6 +14,12 @@ ExclusiveMonitor::~ExclusiveMonitor() = default;
std::unique_ptr<Core::ExclusiveMonitor> MakeExclusiveMonitor(Memory::Memory& memory,
std::size_t num_cores) {
#if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_arm64)
const bool no_locking =
Settings::values.cpu_accuracy.GetValue() == Settings::CPUAccuracy::Auto ||
(Settings::values.cpu_accuracy.GetValue() == Settings::CPUAccuracy::Unsafe &&
Settings::values.cpuopt_unsafe_ignore_global_monitor);
if (no_locking)
return std::make_unique<Core::DynarmicExclusiveMonitorNoLocking>(memory, num_cores);
return std::make_unique<Core::DynarmicExclusiveMonitor>(memory, num_cores);
#else
// TODO(merry): Passthrough exclusive monitor