1
0
Fork 0

Thread: Prevent waking a thread multiple times.

If a thread was woken up by something, cancel the wakeup timeout.
This commit is contained in:
Subv 2015-01-11 13:18:52 -05:00
parent e213f91373
commit b68d51ed30
1 changed files with 3 additions and 0 deletions

View File

@ -263,6 +263,9 @@ void WakeThreadAfterDelay(Thread* thread, s64 nanoseconds) {
/// Resumes a thread from waiting by marking it as "ready" /// Resumes a thread from waiting by marking it as "ready"
void Thread::ResumeFromWait() { void Thread::ResumeFromWait() {
// Cancel any outstanding wakeup events
CoreTiming::UnscheduleEvent(ThreadWakeupEventType, GetHandle());
status &= ~THREADSTATUS_WAIT; status &= ~THREADSTATUS_WAIT;
wait_object = nullptr; wait_object = nullptr;
wait_type = WAITTYPE_NONE; wait_type = WAITTYPE_NONE;