summaryrefslogtreecommitdiffstats
path: root/src/core/hle
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2015-07-21 18:11:48 +0200
committerbunnei <bunneidev@gmail.com>2015-07-21 18:11:48 +0200
commitdcc8f1bef2035c77f06de5af0decbe62e4301b55 (patch)
treefc382bb2146605e300c48820a6a5e546994b44aa /src/core/hle
parentMerge pull request #929 from neobrain/geoshader_definitions (diff)
parentKernel/Scheduling: Clean up a thread's wait_objects when its scheduled. (diff)
downloadyuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar.gz
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar.bz2
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar.lz
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar.xz
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.tar.zst
yuzu-dcc8f1bef2035c77f06de5af0decbe62e4301b55.zip
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/kernel/thread.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 64166ab99..8b49fc7df 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -217,6 +217,14 @@ static void SwitchContext(Thread* new_thread) {
new_thread->context.pc -= thumb_mode ? 2 : 4;
}
+ // Clean up the thread's wait_objects, they'll be restored if needed during
+ // the svcWaitSynchronization call
+ for (int i = 0; i < new_thread->wait_objects.size(); ++i) {
+ SharedPtr<WaitObject> object = new_thread->wait_objects[i];
+ object->RemoveWaitingThread(new_thread);
+ }
+ new_thread->wait_objects.clear();
+
ready_queue.remove(new_thread->current_priority, new_thread);
new_thread->status = THREADSTATUS_RUNNING;