diff options
| author | 2023-10-21 19:18:38 -0400 | |
|---|---|---|
| committer | 2023-10-21 20:03:41 -0400 | |
| commit | dcfe674ed4eef3879f0ed8706507ea21d13aab24 (patch) | |
| tree | efffa461332fc9ecec4c13ef555459379c0ddc41 /src | |
| parent | kernel: add missing TLR clear (diff) | |
| download | yuzu-dcfe674ed4eef3879f0ed8706507ea21d13aab24.tar.gz yuzu-dcfe674ed4eef3879f0ed8706507ea21d13aab24.tar.xz yuzu-dcfe674ed4eef3879f0ed8706507ea21d13aab24.zip | |
kernel: signal thread on termination completed
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 | } |