Switch context on the same thread if necessary

merge-requests/60/head
wwylele 2016-05-29 12:52:29 +07:00
parent ab4b27f0f5
commit 81d3462a19
1 changed files with 6 additions and 2 deletions

@ -542,8 +542,12 @@ void Reschedule() {
HLE::DoneRescheduling(); HLE::DoneRescheduling();
// Don't bother switching to the same thread // Don't bother switching to the same thread.
if (next == cur) // But if the thread was waiting on objects, we still need to switch it
// to perform PC modification, change state to RUNNING, etc.
// This occurs in the case when an object the thread is waiting on immediately wakes up
// the current thread before Reschedule() is called.
if (next == cur && (next == nullptr || next->waitsynch_waited == false))
return; return;
if (cur && next) { if (cur && next) {