diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index d291dad18e..e29f6bb3e3 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -4142,12 +4142,9 @@ extern void ppu_precompile(std::vector& dir_queue, std::vectorget().sem); - if (auto prx = ppu_load_prx(obj, true, path, offset)) { obj.clear(), src.close(); // Clear decrypted file and elf object memory - //.unlock(); ppu_initialize(*prx, false, file_size); ppu_finalize(*prx, true); continue; diff --git a/rpcs3/util/sysinfo.cpp b/rpcs3/util/sysinfo.cpp index 6092da71b5..085ff17038 100755 --- a/rpcs3/util/sysinfo.cpp +++ b/rpcs3/util/sysinfo.cpp @@ -928,13 +928,22 @@ static const bool s_tsc_freq_evaluated = []() -> bool } #ifdef _WIN32 - LARGE_INTEGER freq; + LARGE_INTEGER freq{}; if (!QueryPerformanceFrequency(&freq)) { return 0; } - if (freq.QuadPart <= 9'999'999) + if (!freq.QuadPart) + { + return 0; + } + + // Theoretical constraint for the function itself to operate properly + // Unlikely to be unmet + constexpr LONGLONG min_supported_QPC_frequency = 50'000; + + if (freq.QuadPart <= min_supported_QPC_frequency) { return 0; } @@ -1006,7 +1015,7 @@ static const bool s_tsc_freq_evaluated = []() -> bool const ullong sec_base = ts0.tv_sec; #endif - constexpr usz sleep_time_ms = 40; + const usz sleep_time_ms = timer_freq <= 300'000 ? (300'000 * 50) / timer_freq : 50; for (usz sample = 0; sample < sample_count; sample++) {