summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
diff options
context:
space:
mode:
authorYuhang Zhao <2546789017@qq.com>2021-11-15 17:11:13 +0800
committerMarc Mutz <marc.mutz@qt.io>2021-11-23 09:59:55 +0000
commit1e9f9a4b7d1efa7efd5d501754f2de000a507cc5 (patch)
treef9fcafb97291f1f4d627bbd37903f5d06352377b /src/corelib/global
parent3fcdb6cb6e35a37f9b511ec2705336102c194d6b (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.cpp8
-rw-r--r--src/corelib/global/qoperatingsystemversion.h1
-rw-r--r--src/corelib/global/qoperatingsystemversion_darwin.mm8
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