diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/k_thread.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp index ac0f215d7..a6deb50ec 100644 --- a/src/core/hle/kernel/k_thread.cpp +++ b/src/core/hle/kernel/k_thread.cpp | |||
| @@ -415,10 +415,6 @@ void KThread::StartTermination() { | |||
| 415 | m_parent->ClearRunningThread(this); | 415 | m_parent->ClearRunningThread(this); |
| 416 | } | 416 | } |
| 417 | 417 | ||
| 418 | // Signal. | ||
| 419 | m_signaled = true; | ||
| 420 | KSynchronizationObject::NotifyAvailable(); | ||
| 421 | |||
| 422 | // Clear previous thread in KScheduler. | 418 | // Clear previous thread in KScheduler. |
| 423 | KScheduler::ClearPreviousThread(m_kernel, this); | 419 | KScheduler::ClearPreviousThread(m_kernel, this); |
| 424 | 420 | ||
| @@ -437,6 +433,13 @@ void KThread::FinishTermination() { | |||
| 437 | } | 433 | } |
| 438 | } | 434 | } |
| 439 | 435 | ||
| 436 | // Acquire the scheduler lock. | ||
| 437 | KScopedSchedulerLock sl{m_kernel}; | ||
| 438 | |||
| 439 | // Signal. | ||
| 440 | m_signaled = true; | ||
| 441 | KSynchronizationObject::NotifyAvailable(); | ||
| 442 | |||
| 440 | // Close the thread. | 443 | // Close the thread. |
| 441 | this->Close(); | 444 | this->Close(); |
| 442 | } | 445 | } |