forked from qt-creator/qt-creator
QtVersionManager: Remove QtVersionManager::versions(...)
This call used to return a sorted list of BaseQtVersion *, which is expensive as sorting might imply running qmake for all Qt versions. This also makes BaseQtVersion::validVersions(...) return an unsorted list, so go over all usages of validVersions(...) and use QtVersionManager::sortVersions(...) where that is necessary. Change-Id: I8f5dda20fc0819134c64f6a1ca32512500f71710 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -487,9 +487,10 @@ void ExamplesListModel::updateExamples()
|
||||
|
||||
void ExamplesListModel::updateQtVersions()
|
||||
{
|
||||
QList<BaseQtVersion*> versions = QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
||||
QList<BaseQtVersion*> versions
|
||||
= QtVersionManager::sortVersions(QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
||||
return v->hasExamples() || v->hasDemos();
|
||||
});
|
||||
}));
|
||||
|
||||
// prioritize default qt version
|
||||
ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
|
||||
|
||||
@@ -381,11 +381,8 @@ void QtSupportPlugin::testQtProjectImporter_oneProject()
|
||||
setupQmake(defaultQt, tempDir1.path()),
|
||||
setupQmake(defaultQt, tempDir2.path()) };
|
||||
|
||||
for (int i = 1; i < qmakePaths.count(); ++i) {
|
||||
const Utils::FileName qp = qmakePaths.at(i);
|
||||
QVERIFY(!Utils::contains(QtVersionManager::versions(),
|
||||
[qp](BaseQtVersion *qt) { return qt->qmakeCommand() == qp; }));
|
||||
}
|
||||
for (int i = 1; i < qmakePaths.count(); ++i)
|
||||
QVERIFY(!QtVersionManager::version(Utils::equal(&BaseQtVersion::qmakeCommand, qmakePaths.at(i))));
|
||||
|
||||
QList<DirectoryData *> testData;
|
||||
|
||||
|
||||
@@ -511,15 +511,6 @@ QList<BaseQtVersion *> QtVersionManager::unsortedVersions(const BaseQtVersion::P
|
||||
return m_versions.values();
|
||||
}
|
||||
|
||||
QList<BaseQtVersion *> QtVersionManager::versions(const BaseQtVersion::Predicate &predicate)
|
||||
{
|
||||
QList<BaseQtVersion *> versions;
|
||||
QTC_ASSERT(isLoaded(), return versions);
|
||||
versions = unsortedVersions(predicate);
|
||||
Utils::sort(versions, qtVersionNumberCompare);
|
||||
return versions;
|
||||
}
|
||||
|
||||
QList<BaseQtVersion *> QtVersionManager::sortVersions(const QList<BaseQtVersion *> &input)
|
||||
{
|
||||
QList<BaseQtVersion *> result = input;
|
||||
@@ -532,7 +523,7 @@ QList<BaseQtVersion *> QtVersionManager::validVersions(const BaseQtVersion::Pred
|
||||
QTC_ASSERT(isLoaded(), return { });
|
||||
auto superPredicate
|
||||
= [predicate](const BaseQtVersion *v) { return v->isValid() && (!predicate || predicate(v)); };
|
||||
return versions(superPredicate);
|
||||
return unsortedVersions(superPredicate);
|
||||
}
|
||||
|
||||
bool QtVersionManager::isValidId(int id)
|
||||
|
||||
@@ -47,7 +47,6 @@ public:
|
||||
// This will *always* return at least one (Qt in Path), even if that is
|
||||
// unconfigured.
|
||||
// Sorting is slow due to needing to potentially run qmake --query for each version
|
||||
static QList<BaseQtVersion *> versions(const BaseQtVersion::Predicate &predicate = BaseQtVersion::Predicate());
|
||||
static QList<BaseQtVersion *> validVersions(const BaseQtVersion::Predicate &predicate = BaseQtVersion::Predicate());
|
||||
|
||||
static QList<BaseQtVersion *> unsortedVersions(const BaseQtVersion::Predicate &predicate = BaseQtVersion::Predicate());
|
||||
|
||||
@@ -172,10 +172,11 @@ QString WinRtDeviceFactory::findRunnerFilePath() const
|
||||
{
|
||||
const QString winRtRunnerExe = QStringLiteral("/winrtrunner.exe");
|
||||
const QList<BaseQtVersion *> winrtVersions
|
||||
= QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
||||
= QtVersionManager::sortVersions(
|
||||
QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
||||
return v->type() == QLatin1String(Constants::WINRT_WINRTQT)
|
||||
|| v->type() == QLatin1String(Constants::WINRT_WINPHONEQT);
|
||||
});
|
||||
}));
|
||||
QString filePath;
|
||||
BaseQtVersion *qt = nullptr;
|
||||
for (BaseQtVersion *v : winrtVersions) {
|
||||
|
||||
Reference in New Issue
Block a user