diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-03-06 22:58:56 -0400 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 11:35:32 -0400 |
commit | 44cb9997b3bf3b1e16b05c2b115c7c4ad5e37dd1 (patch) | |
tree | 90bcdf95086664472988143f69a602b67759b3c6 /src | |
parent | 6ed28e15fa9f4c727cf24990c35b13a35547d943 (diff) |
Scheduler: Correct locking for hle threads.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/hle/kernel/scheduler.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index d7529360c..f020438fb 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp @@ -687,9 +687,10 @@ void Scheduler::SwitchToCurrent() { guard.lock(); selected_thread = selected_thread_set; current_thread = selected_thread; + is_context_switch_pending = false; guard.unlock(); while (!is_context_switch_pending) { - if (current_thread != nullptr) { + if (current_thread != nullptr && !current_thread->IsHLEThread()) { current_thread->context_guard.lock(); if (current_thread->GetSchedulingStatus() != ThreadSchedStatus::Runnable) { current_thread->context_guard.unlock(); |