Merge pull request #10998 from Morph1984/qt-stop-messing-with-me
core_timing: Remove GetCurrentTimerResolution in CoreTiming loop
This commit is contained in:
		| @@ -253,9 +253,6 @@ void CoreTiming::ThreadLoop() { | |||||||
|                 auto wait_time = *next_time - GetGlobalTimeNs().count(); |                 auto wait_time = *next_time - GetGlobalTimeNs().count(); | ||||||
|                 if (wait_time > 0) { |                 if (wait_time > 0) { | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
|                     const auto timer_resolution_ns = |  | ||||||
|                         Common::Windows::GetCurrentTimerResolution().count(); |  | ||||||
|  |  | ||||||
|                     while (!paused && !event.IsSet() && wait_time > 0) { |                     while (!paused && !event.IsSet() && wait_time > 0) { | ||||||
|                         wait_time = *next_time - GetGlobalTimeNs().count(); |                         wait_time = *next_time - GetGlobalTimeNs().count(); | ||||||
|  |  | ||||||
| @@ -316,4 +313,10 @@ std::chrono::microseconds CoreTiming::GetGlobalTimeUs() const { | |||||||
|     return std::chrono::microseconds{Common::WallClock::CPUTickToUS(cpu_ticks)}; |     return std::chrono::microseconds{Common::WallClock::CPUTickToUS(cpu_ticks)}; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #ifdef _WIN32 | ||||||
|  | void CoreTiming::SetTimerResolutionNs(std::chrono::nanoseconds ns) { | ||||||
|  |     timer_resolution_ns = ns.count(); | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
| } // namespace Core::Timing | } // namespace Core::Timing | ||||||
|   | |||||||
| @@ -131,6 +131,10 @@ public: | |||||||
|     /// Checks for events manually and returns time in nanoseconds for next event, threadsafe. |     /// Checks for events manually and returns time in nanoseconds for next event, threadsafe. | ||||||
|     std::optional<s64> Advance(); |     std::optional<s64> Advance(); | ||||||
|  |  | ||||||
|  | #ifdef _WIN32 | ||||||
|  |     void SetTimerResolutionNs(std::chrono::nanoseconds ns); | ||||||
|  | #endif | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     struct Event; |     struct Event; | ||||||
|  |  | ||||||
| @@ -143,6 +147,10 @@ private: | |||||||
|  |  | ||||||
|     s64 global_timer = 0; |     s64 global_timer = 0; | ||||||
|  |  | ||||||
|  | #ifdef _WIN32 | ||||||
|  |     s64 timer_resolution_ns; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     // The queue is a min-heap using std::make_heap/push_heap/pop_heap. |     // The queue is a min-heap using std::make_heap/push_heap/pop_heap. | ||||||
|     // We don't use std::priority_queue because we need to be able to serialize, unserialize and |     // We don't use std::priority_queue because we need to be able to serialize, unserialize and | ||||||
|     // erase arbitrary events (RemoveEvent()) regardless of the queue order. These aren't |     // erase arbitrary events (RemoveEvent()) regardless of the queue order. These aren't | ||||||
|   | |||||||
| @@ -101,6 +101,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual | |||||||
| #include "common/settings.h" | #include "common/settings.h" | ||||||
| #include "common/telemetry.h" | #include "common/telemetry.h" | ||||||
| #include "core/core.h" | #include "core/core.h" | ||||||
|  | #include "core/core_timing.h" | ||||||
| #include "core/crypto/key_manager.h" | #include "core/crypto/key_manager.h" | ||||||
| #include "core/file_sys/card_image.h" | #include "core/file_sys/card_image.h" | ||||||
| #include "core/file_sys/common_funcs.h" | #include "core/file_sys/common_funcs.h" | ||||||
| @@ -389,6 +390,7 @@ GMainWindow::GMainWindow(std::unique_ptr<Config> config_, bool has_broken_vulkan | |||||||
|              std::chrono::duration_cast<std::chrono::duration<f64, std::milli>>( |              std::chrono::duration_cast<std::chrono::duration<f64, std::milli>>( | ||||||
|                  Common::Windows::SetCurrentTimerResolutionToMaximum()) |                  Common::Windows::SetCurrentTimerResolutionToMaximum()) | ||||||
|                  .count()); |                  .count()); | ||||||
|  |     system->CoreTiming().SetTimerResolutionNs(Common::Windows::GetCurrentTimerResolution()); | ||||||
| #endif | #endif | ||||||
|     UpdateWindowTitle(); |     UpdateWindowTitle(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ | |||||||
| #include "common/string_util.h" | #include "common/string_util.h" | ||||||
| #include "common/telemetry.h" | #include "common/telemetry.h" | ||||||
| #include "core/core.h" | #include "core/core.h" | ||||||
|  | #include "core/core_timing.h" | ||||||
| #include "core/cpu_manager.h" | #include "core/cpu_manager.h" | ||||||
| #include "core/crypto/key_manager.h" | #include "core/crypto/key_manager.h" | ||||||
| #include "core/file_sys/registered_cache.h" | #include "core/file_sys/registered_cache.h" | ||||||
| @@ -316,8 +317,6 @@ int main(int argc, char** argv) { | |||||||
|  |  | ||||||
| #ifdef _WIN32 | #ifdef _WIN32 | ||||||
|     LocalFree(argv_w); |     LocalFree(argv_w); | ||||||
|  |  | ||||||
|     Common::Windows::SetCurrentTimerResolutionToMaximum(); |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|     MicroProfileOnThreadCreate("EmuThread"); |     MicroProfileOnThreadCreate("EmuThread"); | ||||||
| @@ -351,6 +350,11 @@ int main(int argc, char** argv) { | |||||||
|         break; |         break; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | #ifdef _WIN32 | ||||||
|  |     Common::Windows::SetCurrentTimerResolutionToMaximum(); | ||||||
|  |     system.CoreTiming().SetTimerResolutionNs(Common::Windows::GetCurrentTimerResolution()); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>()); |     system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>()); | ||||||
|     system.SetFilesystem(std::make_shared<FileSys::RealVfsFilesystem>()); |     system.SetFilesystem(std::make_shared<FileSys::RealVfsFilesystem>()); | ||||||
|     system.GetFileSystemController().CreateFactories(*system.GetFilesystem()); |     system.GetFileSystemController().CreateFactories(*system.GetFilesystem()); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user