@@ -203,7 +203,6 @@ void xrCore::CalculateBuildId()
203203 buildId -= daysInMonth[i];
204204}
205205
206- // . why ???
207206#ifdef _EDITOR
208207BOOL WINAPI DllEntryPoint (HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvReserved)
209208#else
@@ -212,12 +211,23 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvRese
212211{
213212 switch (ul_reason_for_call)
214213 {
215- case DLL_PROCESS_ATTACH: break ;
216- case DLL_THREAD_ATTACH:
217- timeBeginPeriod (1 );
218- break ;
219- case DLL_THREAD_DETACH: break ;
220- case DLL_PROCESS_DETACH: break ;
214+ /*
215+ По сути это не рекомендуемый Microsoft, но повсеместно используемый способ повышения точности
216+ соблюдения и измерения временных интревалов функциями Sleep, QueryPerformanceCounter,
217+ timeGetTime и GetTickCount.
218+ Функция действует на всю операционную систему в целом (!) и нет необходимости вызывать её при
219+ старте нового потока. Вызов timeEndPeriod специалисты Microsoft считают обязательным.
220+ Есть подозрения, что Windows сама устанавливает максимальную точность при старте таких
221+ приложений как, например, игры. Тогда есть шанс, что вызов timeBeginPeriod здесь бессмысленен.
222+ Недостатком данного способа является то, что он приводит к общему замедлению работы как
223+ текущего приложения, так и всей операционной системы.
224+ Ещё можно посмотреть ссылки:
225+ https://msdn.microsoft.com/en-us/library/vs/alm/dd757624(v=vs.85).aspx
226+ https://users.livejournal.com/-winnie/151099.html
227+ https://github.com/tebjan/TimerTool
228+ */
229+ case DLL_PROCESS_ATTACH: timeBeginPeriod (1 ); break ;
230+ case DLL_PROCESS_DETACH: timeEndPeriod (1 ); break ;
221231 }
222232 return TRUE ;
223233}
0 commit comments