diff options
| author | 2020-03-03 13:37:11 -0400 | |
|---|---|---|
| committer | 2020-06-27 11:35:23 -0400 | |
| commit | b4dc01f16affe4baa9a7ab5ac4b240e03c03ae67 (patch) | |
| tree | 3bd41c8e286ed564213b9a580e4df875f2687e25 /src/core/hle/kernel/synchronization.cpp | |
| parent | Core: Correct HLE Event Callbacks and other issues. (diff) | |
| download | yuzu-b4dc01f16affe4baa9a7ab5ac4b240e03c03ae67.tar.gz yuzu-b4dc01f16affe4baa9a7ab5ac4b240e03c03ae67.tar.xz yuzu-b4dc01f16affe4baa9a7ab5ac4b240e03c03ae67.zip | |
Kernel: Correct Signal on Thread Death and Setup Sync Objects on Thread for Debugging
Diffstat (limited to 'src/core/hle/kernel/synchronization.cpp')
| -rw-r--r-- | src/core/hle/kernel/synchronization.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/hle/kernel/synchronization.cpp b/src/core/hle/kernel/synchronization.cpp index 4ee7ad93c..ac43a7094 100644 --- a/src/core/hle/kernel/synchronization.cpp +++ b/src/core/hle/kernel/synchronization.cpp | |||
| @@ -70,6 +70,8 @@ std::pair<ResultCode, Handle> Synchronization::WaitFor( | |||
| 70 | for (auto& object : sync_objects) { | 70 | for (auto& object : sync_objects) { |
| 71 | object->AddWaitingThread(SharedFrom(thread)); | 71 | object->AddWaitingThread(SharedFrom(thread)); |
| 72 | } | 72 | } |
| 73 | |||
| 74 | thread->SetSynchronizationObjects(&sync_objects); | ||
| 73 | thread->SetSynchronizationResults(nullptr, RESULT_TIMEOUT); | 75 | thread->SetSynchronizationResults(nullptr, RESULT_TIMEOUT); |
| 74 | thread->SetStatus(ThreadStatus::WaitSynch); | 76 | thread->SetStatus(ThreadStatus::WaitSynch); |
| 75 | } | 77 | } |
| @@ -83,6 +85,7 @@ std::pair<ResultCode, Handle> Synchronization::WaitFor( | |||
| 83 | SchedulerLock lock(kernel); | 85 | SchedulerLock lock(kernel); |
| 84 | ResultCode signaling_result = thread->GetSignalingResult(); | 86 | ResultCode signaling_result = thread->GetSignalingResult(); |
| 85 | SynchronizationObject* signaling_object = thread->GetSignalingObject(); | 87 | SynchronizationObject* signaling_object = thread->GetSignalingObject(); |
| 88 | thread->SetSynchronizationObjects(nullptr); | ||
| 86 | for (auto& obj : sync_objects) { | 89 | for (auto& obj : sync_objects) { |
| 87 | obj->RemoveWaitingThread(SharedFrom(thread)); | 90 | obj->RemoveWaitingThread(SharedFrom(thread)); |
| 88 | } | 91 | } |