diff options
author | bunnei <bunneidev@gmail.com> | 2019-04-25 04:56:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-25 04:56:08 +0200 |
commit | 78574e7a470a29e7ef0c1cc062d334d133c60830 (patch) | |
tree | 9027d3466f0f588c5f14af0e23c7f7b128c79330 /src/core/hle/kernel/svc.cpp | |
parent | Merge pull request #2424 from FernandoS27/compat (diff) | |
parent | kernel/thread: Unify wait synchronization types (diff) | |
download | yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar.gz yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar.bz2 yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar.lz yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar.xz yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.tar.zst yuzu-78574e7a470a29e7ef0c1cc062d334d133c60830.zip |
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 4c763b288..2dcf174c5 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -424,7 +424,7 @@ static ResultCode GetProcessId(Core::System& system, u64* process_id, Handle han /// Default thread wakeup callback for WaitSynchronization static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> thread, SharedPtr<WaitObject> object, std::size_t index) { - ASSERT(thread->GetStatus() == ThreadStatus::WaitSynchAny); + ASSERT(thread->GetStatus() == ThreadStatus::WaitSynch); if (reason == ThreadWakeupReason::Timeout) { thread->SetWaitSynchronizationResult(RESULT_TIMEOUT); @@ -502,7 +502,7 @@ static ResultCode WaitSynchronization(Core::System& system, Handle* index, VAddr } thread->SetWaitObjects(std::move(objects)); - thread->SetStatus(ThreadStatus::WaitSynchAny); + thread->SetStatus(ThreadStatus::WaitSynch); // Create an event to wake the thread up after the specified nanosecond delay has passed thread->WakeAfterDelay(nano_seconds); @@ -518,16 +518,14 @@ static ResultCode CancelSynchronization(Core::System& system, Handle thread_hand LOG_TRACE(Kernel_SVC, "called thread=0x{:X}", thread_handle); const auto& handle_table = system.Kernel().CurrentProcess()->GetHandleTable(); - const SharedPtr<Thread> thread = handle_table.Get<Thread>(thread_handle); + SharedPtr<Thread> thread = handle_table.Get<Thread>(thread_handle); if (!thread) { LOG_ERROR(Kernel_SVC, "Thread handle does not exist, thread_handle=0x{:08X}", thread_handle); return ERR_INVALID_HANDLE; } - ASSERT(thread->GetStatus() == ThreadStatus::WaitSynchAny); - thread->SetWaitSynchronizationResult(ERR_SYNCHRONIZATION_CANCELED); - thread->ResumeFromWait(); + thread->CancelWait(); return RESULT_SUCCESS; } |