QOperatingSystemVersion: Make implementation consistent on all platforms

Only Windows is using lambda function, change to static member
function to be consistent with other platforms.

QOperatingSystemVersionBase::current()'s implementation is exactly
the same on all platforms, so move it to the common source file
instead of implementing it three times on each platform.

Change-Id: I4099235b3b041a9a374e21d537649047ee03e62b
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Yuhang Zhao 2022-01-11 14:23:00 +08:00
parent 4a4240f1bd
commit 831b3506fc
3 changed files with 13 additions and 22 deletions

View File

@ -155,6 +155,12 @@ QOperatingSystemVersion QOperatingSystemVersion::current()
return QOperatingSystemVersionBase::current();
}
QOperatingSystemVersionBase QOperatingSystemVersionBase::current()
{
static const QOperatingSystemVersionBase v = current_impl();
return v;
}
#if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN)
QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl()
{
@ -228,12 +234,6 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl()
#endif
return version;
}
QOperatingSystemVersionBase QOperatingSystemVersionBase::current()
{
static const QOperatingSystemVersionBase v = current_impl();
return v;
}
#endif
static inline int compareVersionComponents(int lhs, int rhs)

View File

@ -53,10 +53,4 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl()
return v;
}
QOperatingSystemVersionBase QOperatingSystemVersionBase::current()
{
static const QOperatingSystemVersionBase v = current_impl();
return v;
}
QT_END_NAMESPACE

View File

@ -113,17 +113,14 @@ OSVERSIONINFOEX qWindowsVersionInfo()
return realResult;
}
QOperatingSystemVersionBase QOperatingSystemVersionBase::current()
QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl()
{
static QOperatingSystemVersionBase v = [](){
QOperatingSystemVersionBase v;
v.m_os = currentType();
const OSVERSIONINFOEX osv = qWindowsVersionInfo();
v.m_major = osv.dwMajorVersion;
v.m_minor = osv.dwMinorVersion;
v.m_micro = osv.dwBuildNumber;
return v;
}();
QOperatingSystemVersionBase v;
v.m_os = currentType();
const OSVERSIONINFOEX osv = qWindowsVersionInfo();
v.m_major = osv.dwMajorVersion;
v.m_minor = osv.dwMinorVersion;
v.m_micro = osv.dwBuildNumber;
return v;
}