mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-29 02:22:37 -06:00
Kernel/Scheduling: Clean up a thread's wait_objects when its scheduled.
They'll be reset if needed during the next svcWaitSynchronization call (if there's any pending)
This commit is contained in:
parent
cd2bb2dc69
commit
275aaeef9c
1 changed files with 8 additions and 0 deletions
|
@ -217,6 +217,14 @@ static void SwitchContext(Thread* new_thread) {
|
||||||
new_thread->context.pc -= thumb_mode ? 2 : 4;
|
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);
|
ready_queue.remove(new_thread->current_priority, new_thread);
|
||||||
new_thread->status = THREADSTATUS_RUNNING;
|
new_thread->status = THREADSTATUS_RUNNING;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue