The way to Unity, pt.2 (#1671)

This commit is contained in:
Daniel R.
2024-12-06 22:04:36 +01:00
committed by GitHub
parent 357b7829c3
commit 7ffa581d4b
15 changed files with 311 additions and 28 deletions

View File

@@ -52,7 +52,22 @@ u64 PS4_SYSV_ABI sceKernelReadTsc() {
int PS4_SYSV_ABI sceKernelUsleep(u32 microseconds) {
#ifdef _WIN64
std::this_thread::sleep_for(std::chrono::microseconds(microseconds));
const auto start_time = std::chrono::high_resolution_clock::now();
auto total_wait_time = std::chrono::microseconds(microseconds);
while (total_wait_time.count() > 0) {
auto wait_time = std::chrono::ceil<std::chrono::milliseconds>(total_wait_time).count();
u64 res = SleepEx(static_cast<u64>(wait_time), true);
if (res == WAIT_IO_COMPLETION) {
auto elapsedTime = std::chrono::high_resolution_clock::now() - start_time;
auto elapsedMicroseconds =
std::chrono::duration_cast<std::chrono::microseconds>(elapsedTime).count();
total_wait_time = std::chrono::microseconds(microseconds - elapsedMicroseconds);
} else {
break;
}
}
return 0;
#else
timespec start;