Changeset - r25626:260a951230d5
[Not reviewed]
master
0 4 0
glx22 - 3 years ago 2021-05-20 16:40:11
glx@openttd.org
Codechange: [WIN32] Use VersionHelpers where appropriate
4 files changed with 3 insertions and 34 deletions:
0 comments (0 inline, 0 general)
src/os/windows/win32.cpp
Show inline comments
 
@@ -707,38 +707,6 @@ int OTTDStringCompare(const char *s1, co
 
	return CompareString(MAKELCID(_current_language->winlangid, SORT_DEFAULT), NORM_IGNORECASE, s1_buf, -1, s2_buf, -1);
 
}
 

	
 
/**
 
 * Is the current Windows version Vista or later?
 
 * @return True if the current Windows is Vista or later.
 
 */
 
bool IsWindowsVistaOrGreater()
 
{
 
	typedef BOOL (WINAPI * LPVERIFYVERSIONINFO)(LPOSVERSIONINFOEX, DWORD, DWORDLONG);
 
	typedef ULONGLONG (NTAPI * LPVERSETCONDITIONMASK)(ULONGLONG, DWORD, BYTE);
 
#ifdef UNICODE
 
	static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoW");
 
#else
 
	static LPVERIFYVERSIONINFO _VerifyVersionInfo = (LPVERIFYVERSIONINFO)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerifyVersionInfoA");
 
#endif
 
	static LPVERSETCONDITIONMASK _VerSetConditionMask = (LPVERSETCONDITIONMASK)GetProcAddress(GetModuleHandle(_T("Kernel32")), "VerSetConditionMask");
 

	
 
	if (_VerifyVersionInfo != nullptr && _VerSetConditionMask != nullptr) {
 
		OSVERSIONINFOEX osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0 };
 
		DWORDLONG dwlConditionMask = 0;
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
 
		dwlConditionMask = _VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
 

	
 
		osvi.dwMajorVersion = 6;
 
		osvi.dwMinorVersion = 0;
 
		osvi.wServicePackMajor = 0;
 

	
 
		return _VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask) != FALSE;
 
	} else {
 
		return LOBYTE(GetVersion()) >= 6;
 
	}
 
}
 

	
 
#ifdef _MSC_VER
 
/* Based on code from MSDN: https://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx */
 
const DWORD MS_VC_EXCEPTION = 0x406D1388;
src/os/windows/win32.h
Show inline comments
 
@@ -25,6 +25,5 @@ wchar_t *convert_to_fs(const char *name,
 

	
 
void Win32SetCurrentLocaleName(const char *iso_code);
 
int OTTDStringCompare(const char *s1, const char *s2);
 
bool IsWindowsVistaOrGreater();
 

	
 
#endif /* WIN32_H */
src/sound/win32_s.cpp
Show inline comments
 
@@ -17,6 +17,7 @@
 
#include "win32_s.h"
 
#include <windows.h>
 
#include <mmsystem.h>
 
#include <versionhelpers.h>
 
#include "../os/windows/win32.h"
 
#include "../thread.h"
 

	
 
@@ -69,7 +70,7 @@ const char *SoundDriver_Win32::Start(con
 
	wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign;
 

	
 
	/* Limit buffer size to prevent overflows. */
 
	_bufsize = GetDriverParamInt(parm, "bufsize", (GB(GetVersion(), 0, 8) > 5) ? 8192 : 4096);
 
	_bufsize = GetDriverParamInt(parm, "bufsize", IsWindowsVistaOrGreater() ? 8192 : 4096);
 
	_bufsize = std::min<int>(_bufsize, UINT16_MAX);
 

	
 
	try {
src/video/win32_v.cpp
Show inline comments
 
@@ -25,6 +25,7 @@
 
#include "win32_v.h"
 
#include <windows.h>
 
#include <imm.h>
 
#include <versionhelpers.h>
 

	
 
#include "../safeguards.h"
 

	
0 comments (0 inline, 0 general)