Kernel: Correct Cancel Synchronization.

This commit corrects the behavior of cancel synchronization when the
thread is running/ready and ensures the next wait is cancelled as it's
suppose to.
This commit is contained in:
Fernando Sahmkow 2019-11-16 11:05:39 -04:00 committed by FernandoS27
parent bb31df62bb
commit 7d16b2d2dd
3 changed files with 19 additions and 2 deletions

View file

@ -505,6 +505,11 @@ static ResultCode WaitSynchronization(Core::System& system, Handle* index, VAddr
return RESULT_TIMEOUT;
}
if (thread->IsSyncCancelled()) {
thread->SetSyncCancelled(false);
return ERR_SYNCHRONIZATION_CANCELED;
}
for (auto& object : objects) {
object->AddWaitingThread(thread);
}