Browse Source

Scheduler: Fix HLE Threads on guard

nce_cpp
Fernando Sahmkow 6 years ago
parent
commit
723a909ee9
  1. 10
      src/core/hle/kernel/scheduler.cpp

10
src/core/hle/kernel/scheduler.cpp

@ -689,10 +689,12 @@ void Scheduler::SwitchToCurrent() {
current_thread = selected_thread; current_thread = selected_thread;
guard.unlock(); guard.unlock();
while (!is_context_switch_pending) { while (!is_context_switch_pending) {
current_thread->context_guard.lock();
if (current_thread->GetSchedulingStatus() != ThreadSchedStatus::Runnable) {
current_thread->context_guard.unlock();
break;
if (current_thread != nullptr) {
current_thread->context_guard.lock();
if (current_thread->GetSchedulingStatus() != ThreadSchedStatus::Runnable) {
current_thread->context_guard.unlock();
break;
}
} }
std::shared_ptr<Common::Fiber> next_context; std::shared_ptr<Common::Fiber> next_context;
if (current_thread != nullptr) { if (current_thread != nullptr) {

Loading…
Cancel
Save