summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/cpu_manager.cpp1
-rw-r--r--src/core/hle/kernel/scheduler.h2
-rw-r--r--src/core/hle/kernel/server_session.cpp3
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() {
185ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread, 185ResultCode 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