mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-01 07:16:42 +08:00 
			
		
		
		
	Merge pull request #10998 from Morph1984/qt-stop-messing-with-me
core_timing: Remove GetCurrentTimerResolution in CoreTiming loop
This commit is contained in:
		
						commit
						95ceae40e6
					
				| @ -253,9 +253,6 @@ void CoreTiming::ThreadLoop() { | ||||
|                 auto wait_time = *next_time - GetGlobalTimeNs().count(); | ||||
|                 if (wait_time > 0) { | ||||
| #ifdef _WIN32 | ||||
|                     const auto timer_resolution_ns = | ||||
|                         Common::Windows::GetCurrentTimerResolution().count(); | ||||
| 
 | ||||
|                     while (!paused && !event.IsSet() && wait_time > 0) { | ||||
|                         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)}; | ||||
| } | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
| void CoreTiming::SetTimerResolutionNs(std::chrono::nanoseconds ns) { | ||||
|     timer_resolution_ns = ns.count(); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| } // namespace Core::Timing
 | ||||
|  | ||||
| @ -131,6 +131,10 @@ public: | ||||
|     /// Checks for events manually and returns time in nanoseconds for next event, threadsafe.
 | ||||
|     std::optional<s64> Advance(); | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
|     void SetTimerResolutionNs(std::chrono::nanoseconds ns); | ||||
| #endif | ||||
| 
 | ||||
| private: | ||||
|     struct Event; | ||||
| 
 | ||||
| @ -143,6 +147,10 @@ private: | ||||
| 
 | ||||
|     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.
 | ||||
|     // 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
 | ||||
|  | ||||
| @ -101,6 +101,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual | ||||
| #include "common/settings.h" | ||||
| #include "common/telemetry.h" | ||||
| #include "core/core.h" | ||||
| #include "core/core_timing.h" | ||||
| #include "core/crypto/key_manager.h" | ||||
| #include "core/file_sys/card_image.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>>( | ||||
|                  Common::Windows::SetCurrentTimerResolutionToMaximum()) | ||||
|                  .count()); | ||||
|     system->CoreTiming().SetTimerResolutionNs(Common::Windows::GetCurrentTimerResolution()); | ||||
| #endif | ||||
|     UpdateWindowTitle(); | ||||
| 
 | ||||
|  | ||||
| @ -21,6 +21,7 @@ | ||||
| #include "common/string_util.h" | ||||
| #include "common/telemetry.h" | ||||
| #include "core/core.h" | ||||
| #include "core/core_timing.h" | ||||
| #include "core/cpu_manager.h" | ||||
| #include "core/crypto/key_manager.h" | ||||
| #include "core/file_sys/registered_cache.h" | ||||
| @ -316,8 +317,6 @@ int main(int argc, char** argv) { | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
|     LocalFree(argv_w); | ||||
| 
 | ||||
|     Common::Windows::SetCurrentTimerResolutionToMaximum(); | ||||
| #endif | ||||
| 
 | ||||
|     MicroProfileOnThreadCreate("EmuThread"); | ||||
| @ -351,6 +350,11 @@ int main(int argc, char** argv) { | ||||
|         break; | ||||
|     } | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
|     Common::Windows::SetCurrentTimerResolutionToMaximum(); | ||||
|     system.CoreTiming().SetTimerResolutionNs(Common::Windows::GetCurrentTimerResolution()); | ||||
| #endif | ||||
| 
 | ||||
|     system.SetContentProvider(std::make_unique<FileSys::ContentProviderUnion>()); | ||||
|     system.SetFilesystem(std::make_shared<FileSys::RealVfsFilesystem>()); | ||||
|     system.GetFileSystemController().CreateFactories(*system.GetFilesystem()); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user