summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2014-11-30 14:41:49 +0100
committerbunnei <bunneidev@gmail.com>2014-11-30 14:41:49 +0100
commita5afad09378dab8978e8e4149337aebf70891668 (patch)
tree8affb19959e7b78fdb0b1aea80569b2ba30b1863 /src
parentMerge pull request #228 from linkmauve/glfw-error (diff)
parentThread: Check that thread is actually in "wait state" when verifying wait. (diff)
downloadyuzu-a5afad09378dab8978e8e4149337aebf70891668.tar
yuzu-a5afad09378dab8978e8e4149337aebf70891668.tar.gz
yuzu-a5afad09378dab8978e8e4149337aebf70891668.tar.bz2
yuzu-a5afad09378dab8978e8e4149337aebf70891668.tar.lz
yuzu-a5afad09378dab8978e8e4149337aebf70891668.tar.xz
yuzu-a5afad09378dab8978e8e4149337aebf70891668.tar.zst
yuzu-a5afad09378dab8978e8e4149337aebf70891668.zip
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/thread.cpp2
-rw-r--r--src/core/hle/svc.cpp5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index f3f54a4e9..f59795901 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -143,7 +143,7 @@ void ChangeReadyState(Thread* t, bool ready) {
/// Verify that a thread has not been released from waiting
inline bool VerifyWait(const Thread* thread, WaitType type, Handle wait_handle) {
_dbg_assert_(KERNEL, thread != nullptr);
- return type == thread->wait_type && wait_handle == thread->wait_handle;
+ return (type == thread->wait_type) && (wait_handle == thread->wait_handle) && (thread->IsWaiting());
}
/// Stops the current thread
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index 87d768856..43a3cbe03 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -189,6 +189,8 @@ static Result CreateAddressArbiter(u32* arbiter) {
/// Arbitrate address
static Result ArbitrateAddress(Handle arbiter, u32 address, u32 type, u32 value, s64 nanoseconds) {
+ DEBUG_LOG(SVC, "called handle=0x%08X, address=0x%08X, type=0x%08X, value=0x%08X", arbiter,
+ address, type, value);
return Kernel::ArbitrateAddress(arbiter, static_cast<Kernel::ArbitrationType>(type),
address, value).raw;
}
@@ -331,6 +333,9 @@ static Result ClearEvent(Handle evt) {
/// Sleep the current thread
static void SleepThread(s64 nanoseconds) {
DEBUG_LOG(SVC, "called nanoseconds=%lld", nanoseconds);
+
+ // Check for next thread to schedule
+ HLE::Reschedule(__func__);
}
/// This returns the total CPU ticks elapsed since the CPU was powered-on