diff options
author | Yuhang Zhao <2546789017@qq.com> | 2021-11-15 17:11:13 +0800 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2021-11-23 09:59:55 +0000 |
commit | 1e9f9a4b7d1efa7efd5d501754f2de000a507cc5 (patch) | |
tree | f9fcafb97291f1f4d627bbd37903f5d06352377b /src/corelib/global | |
parent | 3fcdb6cb6e35a37f9b511ec2705336102c194d6b (diff) |
QOperatingSystemVersion: cache the retrieved version
It won't change during runtime, so make it a static
variable to avoid fetching the information repeatedly.
Change-Id: I430ceba218f9f3515558736238d1d5a74cf59419
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/corelib/global')
-rw-r--r-- | src/corelib/global/qoperatingsystemversion.cpp | 8 | ||||
-rw-r--r-- | src/corelib/global/qoperatingsystemversion.h | 1 | ||||
-rw-r--r-- | src/corelib/global/qoperatingsystemversion_darwin.mm | 8 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/corelib/global/qoperatingsystemversion.cpp b/src/corelib/global/qoperatingsystemversion.cpp index 82c6319b2f..8c4a393742 100644 --- a/src/corelib/global/qoperatingsystemversion.cpp +++ b/src/corelib/global/qoperatingsystemversion.cpp @@ -156,7 +156,7 @@ QOperatingSystemVersion QOperatingSystemVersion::current() } #if !defined(Q_OS_DARWIN) && !defined(Q_OS_WIN) -QOperatingSystemVersionBase QOperatingSystemVersionBase::current() +QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl() { QOperatingSystemVersionBase version; version.m_os = currentType(); @@ -228,6 +228,12 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current() #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.h b/src/corelib/global/qoperatingsystemversion.h index 3075723c42..2ab08a5427 100644 --- a/src/corelib/global/qoperatingsystemversion.h +++ b/src/corelib/global/qoperatingsystemversion.h @@ -127,6 +127,7 @@ protected: QOperatingSystemVersionBase() = default; private: + static QOperatingSystemVersionBase current_impl(); OSType m_os; diff --git a/src/corelib/global/qoperatingsystemversion_darwin.mm b/src/corelib/global/qoperatingsystemversion_darwin.mm index 9ecc8ca7a7..1666b4e9cf 100644 --- a/src/corelib/global/qoperatingsystemversion_darwin.mm +++ b/src/corelib/global/qoperatingsystemversion_darwin.mm @@ -42,7 +42,7 @@ QT_BEGIN_NAMESPACE -QOperatingSystemVersionBase QOperatingSystemVersionBase::current() +QOperatingSystemVersionBase QOperatingSystemVersionBase::current_impl() { NSOperatingSystemVersion osv = NSProcessInfo.processInfo.operatingSystemVersion; QOperatingSystemVersionBase v; @@ -53,4 +53,10 @@ QOperatingSystemVersionBase QOperatingSystemVersionBase::current() return v; } +QOperatingSystemVersionBase QOperatingSystemVersionBase::current() +{ + static const QOperatingSystemVersionBase v = current_impl(); + return v; +} + QT_END_NAMESPACE |