Add micro version to wxCheckOsVersion().

This commit is contained in:
Tobias Taschner
2016-02-26 16:22:54 +01:00
parent 84fbc12f2d
commit 3bdb4c4b21
6 changed files with 23 additions and 15 deletions

View File

@@ -145,7 +145,7 @@ WXDLLIMPEXP_BASE wxOperatingSystemId wxGetOsVersion(int *verMaj = NULL,
int *verMicro = NULL); int *verMicro = NULL);
// Check is OS version is at least the specified major and minor version // Check is OS version is at least the specified major and minor version
WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0, int microVsn = 0);
// Get platform endianness // Get platform endianness
WXDLLIMPEXP_BASE bool wxIsPlatformLittleEndian(); WXDLLIMPEXP_BASE bool wxIsPlatformLittleEndian();

View File

@@ -897,7 +897,7 @@ wxOperatingSystemId wxGetOsVersion(int* major = NULL, int* minor = NULL, int* mi
@header{wx/utils.h} @header{wx/utils.h}
*/ */
bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); bool wxCheckOsVersion(int majorVsn, int minorVsn = 0, int microVsn = 0);
/** /**
Returns @true if the operating system the program is running under is 64 Returns @true if the operating system the program is running under is 64

View File

@@ -309,7 +309,7 @@ bool wxPlatformInfo::CheckOSVersion(int major, int minor, int micro) const
// this check gets forwarded to the wxCheckOsVersion which might do more than a simple // this check gets forwarded to the wxCheckOsVersion which might do more than a simple
// number check if supported by the platform // number check if supported by the platform
if (m_initializedForCurrentPlatform) if (m_initializedForCurrentPlatform)
return wxCheckOsVersion(major, minor); return wxCheckOsVersion(major, minor, micro);
else else
return DoCheckVersion(GetOSMajorVersion(), return DoCheckVersion(GetOSMajorVersion(),
GetOSMinorVersion(), GetOSMinorVersion(),

View File

@@ -1281,22 +1281,26 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro)
return s_version.os; return s_version.os;
} }
bool wxCheckOsVersion(int majorVsn, int minorVsn) bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn)
{ {
OSVERSIONINFOEX osvi; OSVERSIONINFOEX osvi;
wxZeroMemory(osvi); wxZeroMemory(osvi);
osvi.dwOSVersionInfoSize = sizeof(osvi); osvi.dwOSVersionInfoSize = sizeof(osvi);
DWORDLONG const dwlConditionMask = DWORDLONG const dwlConditionMask =
::VerSetConditionMask(
::VerSetConditionMask( ::VerSetConditionMask(
::VerSetConditionMask( ::VerSetConditionMask(
0, VER_MAJORVERSION, VER_GREATER_EQUAL), 0, VER_MAJORVERSION, VER_GREATER_EQUAL),
VER_MINORVERSION, VER_GREATER_EQUAL); VER_MINORVERSION, VER_GREATER_EQUAL),
VER_BUILDNUMBER, VER_GREATER_EQUAL);
osvi.dwMajorVersion = majorVsn; osvi.dwMajorVersion = majorVsn;
osvi.dwMinorVersion = minorVsn; osvi.dwMinorVersion = minorVsn;
osvi.dwBuildNumber = microVsn;
return ::VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask) != FALSE; return ::VerifyVersionInfo(&osvi,
VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask) != FALSE;
} }
wxWinVersion wxGetWinVersion() wxWinVersion wxGetWinVersion()

View File

@@ -75,7 +75,7 @@ wxGCC_WARNING_RESTORE()
return wxOS_MAC_OSX_DARWIN; return wxOS_MAC_OSX_DARWIN;
} }
bool wxCheckOsVersion(int majorVsn, int minorVsn) bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn)
{ {
#ifdef wxHAS_NSPROCESSINFO #ifdef wxHAS_NSPROCESSINFO
if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)]) if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)])
@@ -83,17 +83,19 @@ bool wxCheckOsVersion(int majorVsn, int minorVsn)
NSOperatingSystemVersion osVer; NSOperatingSystemVersion osVer;
osVer.majorVersion = majorVsn; osVer.majorVersion = majorVsn;
osVer.minorVersion = minorVsn; osVer.minorVersion = minorVsn;
osVer.patchVersion = 0; osVer.patchVersion = microVsn;
return [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:osVer] != NO; return [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:osVer] != NO;
} }
else else
#endif #endif
{ {
int majorCur, minorCur; int majorCur, minorCur, microCur;
wxGetOsVersion(&majorCur, &minorCur); wxGetOsVersion(&majorCur, &minorCur, &microCur);
return majorCur > majorVsn || (majorCur == majorVsn && minorCur >= minorVsn); return majorCur > majorVsn
|| (majorCur == majorVsn && minorCur >= minorVsn)
|| (majorCur == majorVsn && minorCur == minorVsn && microCur >= microVsn);
} }
} }

View File

@@ -1155,12 +1155,14 @@ wxString wxGetOsDescription()
return wxGetCommandOutput(wxT("uname -s -r -m")); return wxGetCommandOutput(wxT("uname -s -r -m"));
} }
bool wxCheckOsVersion(int majorVsn, int minorVsn) bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn)
{ {
int majorCur, minorCur; int majorCur, minorCur, microCur;
wxGetOsVersion(&majorCur, &minorCur); wxGetOsVersion(&majorCur, &minorCur, &microCur);
return majorCur > majorVsn || (majorCur == majorVsn && minorCur >= minorVsn); return majorCur > majorVsn
|| (majorCur == majorVsn && minorCur >= minorVsn)
|| (majorCur == majorVsn && minorCur == minorVsn && microCur >= microVsn);
} }
#endif // !__DARWIN__ #endif // !__DARWIN__