Pārlūkot izejas kodu

windows: ensure minimum possible timer resolution for sleep

Robin Hübner 7 gadi atpakaļ
vecāks
revīzija
8cb1ff9452
1 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 6 0
      platform/windows/os_windows.cpp

+ 6 - 0
platform/windows/os_windows.cpp

@@ -188,6 +188,10 @@ void OS_Windows::initialize_core() {
 	ticks_start = 0;
 	ticks_start = 0;
 	ticks_start = get_ticks_usec();
 	ticks_start = get_ticks_usec();
 
 
+	// set minimum resolution for periodic timers, otherwise Sleep(n) may wait at least as
+	//  long as the windows scheduler resolution (~16-30ms) even for calls like Sleep(1)
+	timeBeginPeriod(1);
+
 	process_map = memnew((Map<ProcessID, ProcessInfo>));
 	process_map = memnew((Map<ProcessID, ProcessInfo>));
 
 
 	IP_Unix::make_default();
 	IP_Unix::make_default();
@@ -1261,6 +1265,8 @@ void OS_Windows::finalize() {
 
 
 void OS_Windows::finalize_core() {
 void OS_Windows::finalize_core() {
 
 
+	timeEndPeriod(1);
+
 	memdelete(process_map);
 	memdelete(process_map);
 
 
 	TCPServerWinsock::cleanup();
 	TCPServerWinsock::cleanup();