From 1e9f9a4b7d1efa7efd5d501754f2de000a507cc5 Mon Sep 17 00:00:00 2001 From: Yuhang Zhao <2546789017@qq.com> Date: Mon, 15 Nov 2021 17:11:13 +0800 Subject: 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 --- src/corelib/global/qoperatingsystemversion.cpp | 8 +++++++- src/corelib/global/qoperatingsystemversion.h | 1 + src/corelib/global/qoperatingsystemversion_darwin.mm | 8 +++++++- 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/corelib/global') 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 -- cgit v1.2.3