diff options
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() { | |||
| 253 | while (true) { | 253 | while (true) { |
| 254 | auto& physical_core = kernel.CurrentPhysicalCore(); | 254 | auto& physical_core = kernel.CurrentPhysicalCore(); |
| 255 | PreemptSingleCore(false); | 255 | PreemptSingleCore(false); |
| 256 | system.CoreTiming().AddTicks(1000U); | ||
| 256 | idle_count++; | 257 | idle_count++; |
| 257 | auto& scheduler = physical_core.Scheduler(); | 258 | auto& scheduler = physical_core.Scheduler(); |
| 258 | scheduler.TryDoContextSwitch(); | 259 | 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: | |||
| 188 | 188 | ||
| 189 | /// Scheduler lock mechanisms. | 189 | /// Scheduler lock mechanisms. |
| 190 | bool is_locked{}; | 190 | bool is_locked{}; |
| 191 | std::mutex inner_lock{}; // TODO(Blinkhawk): Replace for a SpinLock | 191 | Common::SpinLock inner_lock{}; |
| 192 | std::atomic<s64> scope_lock{}; | 192 | std::atomic<s64> scope_lock{}; |
| 193 | Core::EmuThreadHandle current_owner{Core::EmuThreadHandle::InvalidHandle()}; | 193 | Core::EmuThreadHandle current_owner{Core::EmuThreadHandle::InvalidHandle()}; |
| 194 | 194 | ||
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() { | |||
| 185 | ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, | 185 | ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, |
| 186 | Core::Memory::Memory& memory) { | 186 | Core::Memory::Memory& memory) { |
| 187 | ResultCode result = QueueSyncRequest(std::move(thread), memory); | 187 | ResultCode result = QueueSyncRequest(std::move(thread), memory); |
| 188 | Core::System::GetInstance().CoreTiming().ScheduleEvent(0, request_event, {}); | 188 | const u64 delay = kernel.IsMulticore() ? 0U : 20000U; |
| 189 | Core::System::GetInstance().CoreTiming().ScheduleEvent(delay, request_event, {}); | ||
| 189 | return result; | 190 | return result; |
| 190 | } | 191 | } |
| 191 | 192 | ||