diff --git a/app/src/main/cpp/skyline/kernel/scheduler.cpp b/app/src/main/cpp/skyline/kernel/scheduler.cpp index 2ae135bb..ccabc25a 100644 --- a/app/src/main/cpp/skyline/kernel/scheduler.cpp +++ b/app/src/main/cpp/skyline/kernel/scheduler.cpp @@ -379,10 +379,12 @@ namespace skyline::kernel { if (it == core->queue.begin() && it != core->queue.end()) (*it)->scheduleCondition.notify_one(); - if (it == core->queue.begin() && !thread->pendingYield) { + if (it == core->queue.begin()) { // We need to send a yield signal to the thread if it's currently running - thread->SendSignal(YieldSignal); - thread->pendingYield = true; + if (!thread->pendingYield) { + thread->SendSignal(YieldSignal); + thread->pendingYield = true; + } thread->forceYield = true; } } else {