Changeset - r24739:ed9f9bbb6692
[Not reviewed]
master
0 2 0
Loïc Guilloux - 3 years ago 2021-02-09 20:21:57
glx22@users.noreply.github.com
Fix: [Win32] Set minimum resolution for timers to 1ms. (#8660)
2 files changed with 12 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/os/windows/crashlog_win.cpp
Show inline comments
 
@@ -21,6 +21,7 @@
 

	
 
#include <windows.h>
 
#include <signal.h>
 
#include <timeapi.h>
 

	
 
#include "../../safeguards.h"
 

	
 
@@ -540,6 +541,9 @@ void *_safe_esp = nullptr;
 

	
 
static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
 
{
 
	/* Restore system timer resolution. */
 
	timeEndPeriod(1);
 

	
 
	/* Disable our event loop. */
 
	SetWindowLongPtr(GetActiveWindow(), GWLP_WNDPROC, (LONG_PTR)&DefWindowProc);
 

	
src/os/windows/win32.cpp
Show inline comments
 
@@ -18,6 +18,7 @@
 
#define NO_SHOBJIDL_SORTDIRECTION // Avoid multiple definition of SORT_ASCENDING
 
#include <shlobj.h> /* SHGetFolderPath */
 
#include <shellapi.h>
 
#include <timeapi.h>
 
#include "win32.h"
 
#include "../../fios.h"
 
#include "../../core/alloc_func.hpp"
 
@@ -413,6 +414,9 @@ int APIENTRY WinMain(HINSTANCE hInstance
 
	int argc;
 
	char *argv[64]; // max 64 command line arguments
 

	
 
	/* Set system timer resolution to 1ms. */
 
	timeBeginPeriod(1);
 

	
 
	CrashLog::InitialiseCrashLog();
 

	
 
#if defined(UNICODE)
 
@@ -440,6 +444,10 @@ int APIENTRY WinMain(HINSTANCE hInstance
 
	for (int i = 0; i < argc; i++) ValidateString(argv[i]);
 

	
 
	openttd_main(argc, argv);
 

	
 
	/* Restore system timer resolution. */
 
	timeEndPeriod(1);
 

	
 
	free(cmdline);
 
	return 0;
 
}
0 comments (0 inline, 0 general)