diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-03-29 23:06:46 +0200 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 17:36:02 +0200 |
commit | 7e2ce2f7f47e77b46d66dcefbd0c391e58421103 (patch) | |
tree | d851ffad9019306160298aa721df295442f7749a /src | |
parent | FrameLimiting: Enable frame limiting for single core. (diff) | |
download | yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.gz yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.bz2 yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.lz yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.xz yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.tar.zst yuzu-7e2ce2f7f47e77b46d66dcefbd0c391e58421103.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/cpu_manager.cpp | 1 | ||||
-rw-r--r-- | src/core/hle/kernel/scheduler.h | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/server_session.cpp | 3 |
3 files changed, 4 insertions, 2 deletions
diff --git a/src/core/cpu_manager.cpp b/src/core/cpu_manager.cpp index 604405060..d604aa446 100644 --- a/src/core/cpu_manager.cpp +++ b/src/core/cpu_manager.cpp @@ -253,6 +253,7 @@ void CpuManager::SingleCoreRunIdleThread() { while (true) { auto& physical_core = kernel.CurrentPhysicalCore(); PreemptSingleCore(false); + system.CoreTiming().AddTicks(1000U); idle_count++; auto& scheduler = physical_core.Scheduler(); scheduler.TryDoContextSwitch(); diff --git a/src/core/hle/kernel/scheduler.h b/src/core/hle/kernel/scheduler.h index f63cc5085..10dc4b832 100644 --- a/src/core/hle/kernel/scheduler.h +++ b/src/core/hle/kernel/scheduler.h @@ -188,7 +188,7 @@ private: /// Scheduler lock mechanisms. bool is_locked{}; - std::mutex inner_lock{}; // TODO(Blinkhawk): Replace for a SpinLock + Common::SpinLock inner_lock{}; std::atomic<s64> scope_lock{}; Core::EmuThreadHandle current_owner{Core::EmuThreadHandle::InvalidHandle()}; diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp index 05516a453..e988a3f22 100644 --- a/src/core/hle/kernel/server_session.cpp +++ b/src/core/hle/kernel/server_session.cpp @@ -185,7 +185,8 @@ ResultCode ServerSession::CompleteSyncRequest() { ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, Core::Memory::Memory& memory) { ResultCode result = QueueSyncRequest(std::move(thread), memory); - Core::System::GetInstance().CoreTiming().ScheduleEvent(0, request_event, {}); + const u64 delay = kernel.IsMulticore() ? 0U : 20000U; + Core::System::GetInstance().CoreTiming().ScheduleEvent(delay, request_event, {}); return result; } |