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>
bb10
Yuhang Zhao 2021-11-15 17:11:13 +08:00 committed by Marc Mutz
parent 3fcdb6cb6e
commit 1e9f9a4b7d
3 changed files with 15 additions and 2 deletions

View File

@ -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)

View File

@ -127,6 +127,7 @@ protected:
QOperatingSystemVersionBase() = default;
private:
static QOperatingSystemVersionBase current_impl();
OSType m_os;

View File

@ -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