@@ -203,7 +203,6 @@ void xrCore::CalculateBuildId()
203
203
buildId -= daysInMonth[i];
204
204
}
205
205
206
- // . why ???
207
206
#ifdef _EDITOR
208
207
BOOL WINAPI DllEntryPoint (HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvReserved)
209
208
#else
@@ -212,12 +211,23 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvRese
212
211
{
213
212
switch (ul_reason_for_call)
214
213
{
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 ;
221
231
}
222
232
return TRUE ;
223
233
}
0 commit comments