diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index eb9f0609e24..c15d0d8d96a 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -1302,7 +1302,7 @@ void AndroidConfigurations::updateAutomaticKitList() } QHash > qtVersionsForArch; - foreach (QtSupport::BaseQtVersion *qtVersion, QtSupport::QtVersionManager::versions()) { + foreach (QtSupport::BaseQtVersion *qtVersion, QtSupport::QtVersionManager::unsortedVersions()) { if (qtVersion->type() != QLatin1String(Constants::ANDROIDQT)) continue; QList qtAbis = qtVersion->qtAbis(); diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index c9a04cad215..c893b8ccf27 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -60,7 +60,7 @@ QVariant QtKitInformation::defaultValue(ProjectExplorer::Kit *k) const Q_UNUSED(k); // find "Qt in PATH": - QList versionList = QtVersionManager::versions(); + QList versionList = QtVersionManager::unsortedVersions(); BaseQtVersion *result = findOrDefault(versionList, [](const BaseQtVersion *v) { return v->autodetectionSource() == QLatin1String("PATH"); }); @@ -174,7 +174,7 @@ int QtKitInformation::qtVersionId(const ProjectExplorer::Kit *k) id = -1; } else { QString source = data.toString(); - foreach (BaseQtVersion *v, QtVersionManager::versions()) { + foreach (BaseQtVersion *v, QtVersionManager::unsortedVersions()) { if (v->autodetectionSource() != source) continue; id = v->uniqueId(); diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 7298eb319e8..3a44f6861db 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -354,7 +354,7 @@ void QtVersionManager::updateFromInstaller(bool emitSignal) qDebug() << ""; } } - foreach (BaseQtVersion *qtVersion, QtVersionManager::versions()) { + foreach (BaseQtVersion *qtVersion, m_versions) { if (qtVersion->autodetectionSource().startsWith(QLatin1String("SDK."))) { if (!sdkVersions.contains(qtVersion->autodetectionSource())) { if (debug) @@ -515,6 +515,13 @@ int QtVersionManager::getUniqueId() return m_idcount++; } +QList QtVersionManager::unsortedVersions() +{ + QList versions; + QTC_ASSERT(isLoaded(), return versions); + return m_versions.values(); +} + QList QtVersionManager::versions() { QList versions; diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h index 0754a566757..b99bb3e42d0 100644 --- a/src/plugins/qtsupport/qtversionmanager.h +++ b/src/plugins/qtsupport/qtversionmanager.h @@ -56,6 +56,9 @@ public: static QList versions(); static QList validVersions(); + // Sorting is slow due to needing to potentially run qmake --query for each version + static QList unsortedVersions(); + // Note: DO NOT STORE THIS POINTER! // The QtVersionManager will delete it at random times and you will // need to get a new pointer by calling this function again!