From 831b3506fcdd256e37f30e57334b09c890f0c481 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Tue, 11 Jan 2022 14:23:00 +0800 Subject: [PATCH] QOperatingSystemVersion: Make implementation consistent on all platforms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Thiago Macieira --- src/corelib/global/qoperatingsystemversion.cpp | 12 ++++++------ .../global/qoperatingsystemversion_darwin.mm | 6 ------ .../global/qoperatingsystemversion_win.cpp | 17 +++++++---------- 3 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/corelib/global/qoperatingsystemversion.cpp b/src/corelib/global/qoperatingsystemversion.cpp index 8c4a393742..2255b08f68 100644 --- a/src/corelib/global/qoperatingsystemversion.cpp +++ b/src/corelib/global/qoperatingsystemversion.cpp @@ -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) diff --git a/src/corelib/global/qoperatingsystemversion_darwin.mm b/src/corelib/global/qoperatingsystemversion_darwin.mm index 1666b4e9cf..82de319d49 100644 --- a/src/corelib/global/qoperatingsystemversion_darwin.mm +++ b/src/corelib/global/qoperatingsystemversion_darwin.mm @@ -53,10 +53,4 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl() return v; } -QOperatingSystemVersionBase QOperatingSystemVersionBase::current() -{ - static const QOperatingSystemVersionBase v = current_impl(); - return v; -} - QT_END_NAMESPACE diff --git a/src/corelib/global/qoperatingsystemversion_win.cpp b/src/corelib/global/qoperatingsystemversion_win.cpp index bcb015af39..51f283072a 100644 --- a/src/corelib/global/qoperatingsystemversion_win.cpp +++ b/src/corelib/global/qoperatingsystemversion_win.cpp @@ -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; }