diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-03-07 18:37:47 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 17:35:36 +0200 |
commit | 535c542d84ea56b5710bf84af3fba6272913f48e (patch) | |
tree | baf3236ce4b9341b8f11e450be7e8b39ad67d524 | |
parent | Scheduler: Remove arm_interface lock and a few corrections. (diff) | |
download | yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar.gz yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar.bz2 yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar.lz yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar.xz yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.tar.zst yuzu-535c542d84ea56b5710bf84af3fba6272913f48e.zip |
-rw-r--r-- | src/core/hle/kernel/errors.h | 1 | ||||
-rw-r--r-- | src/core/hle/kernel/synchronization.cpp | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/core/hle/kernel/errors.h b/src/core/hle/kernel/errors.h index 29bfa3621..d4e5d88cf 100644 --- a/src/core/hle/kernel/errors.h +++ b/src/core/hle/kernel/errors.h @@ -12,6 +12,7 @@ namespace Kernel { constexpr ResultCode ERR_MAX_CONNECTIONS_REACHED{ErrorModule::Kernel, 7}; constexpr ResultCode ERR_INVALID_CAPABILITY_DESCRIPTOR{ErrorModule::Kernel, 14}; +constexpr ResultCode ERR_THREAD_TERMINATING{ErrorModule::Kernel, 59}; constexpr ResultCode ERR_INVALID_SIZE{ErrorModule::Kernel, 101}; constexpr ResultCode ERR_INVALID_ADDRESS{ErrorModule::Kernel, 102}; constexpr ResultCode ERR_OUT_OF_RESOURCES{ErrorModule::Kernel, 103}; diff --git a/src/core/hle/kernel/synchronization.cpp b/src/core/hle/kernel/synchronization.cpp index a7e3fbe92..4323fc120 100644 --- a/src/core/hle/kernel/synchronization.cpp +++ b/src/core/hle/kernel/synchronization.cpp @@ -59,7 +59,10 @@ std::pair<ResultCode, Handle> Synchronization::WaitFor( return {RESULT_TIMEOUT, InvalidHandle}; } - /// TODO(Blinkhawk): Check for termination pending + if (thread->IsPendingTermination()) { + lock.CancelSleep(); + return {ERR_THREAD_TERMINATING, InvalidHandle}; + } if (thread->IsSyncCancelled()) { thread->SetSyncCancelled(false); |