Sfoglia il codice sorgente

Kernel: remove object's waiting thread if it is dead

wwylele 9 anni fa
parent
commit
4c9b80cee3
1 ha cambiato i file con 2 aggiunte e 1 eliminazioni
  1. 2 1
      src/core/hle/kernel/kernel.cpp

+ 2 - 1
src/core/hle/kernel/kernel.cpp

@@ -35,7 +35,8 @@ void WaitObject::RemoveWaitingThread(Thread* thread) {
 SharedPtr<Thread> WaitObject::GetHighestPriorityReadyThread() {
 SharedPtr<Thread> WaitObject::GetHighestPriorityReadyThread() {
     // Remove the threads that are ready or already running from our waitlist
     // Remove the threads that are ready or already running from our waitlist
     boost::range::remove_erase_if(waiting_threads, [](const SharedPtr<Thread>& thread) {
     boost::range::remove_erase_if(waiting_threads, [](const SharedPtr<Thread>& thread) {
-        return thread->status == THREADSTATUS_RUNNING || thread->status == THREADSTATUS_READY;
+        return thread->status == THREADSTATUS_RUNNING || thread->status == THREADSTATUS_READY ||
+               thread->status == THREADSTATUS_DEAD;
     });
     });
 
 
     // TODO(Subv): This call should be performed inside the loop below to check if an object can be
     // TODO(Subv): This call should be performed inside the loop below to check if an object can be