[Threading] Change behaviour when provided timeout is 0 for Normal priority or less threads

This commit is contained in:
Gliniak 2024-12-23 18:55:49 +01:00
parent a6e3d77504
commit 22e5216d48
1 changed files with 6 additions and 0 deletions

View File

@ -763,6 +763,12 @@ X_STATUS XThread::Delay(uint32_t processor_mode, uint32_t alertable,
timeout_ms = uint32_t(-timeout_ticks / 10000); // Ticks -> MS
} else {
timeout_ms = 0;
// TODO(Gliniak): Check how it works, but it seems outright wrong.
// However some titles like to change priority then go to sleep with timeout
// 0.
if (priority_ <= xe::threading::ThreadPriority::kNormal) {
timeout_ms = 1;
}
}
timeout_ms = Clock::ScaleGuestDurationMillis(timeout_ms);
if (alertable) {