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()
|
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();
|
return v->hasExamples() || v->hasDemos();
|
||||||
});
|
}));
|
||||||
|
|
||||||
// prioritize default qt version
|
// prioritize default qt version
|
||||||
ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
|
ProjectExplorer::Kit *defaultKit = ProjectExplorer::KitManager::defaultKit();
|
||||||
|
|||||||
@@ -381,11 +381,8 @@ void QtSupportPlugin::testQtProjectImporter_oneProject()
|
|||||||
setupQmake(defaultQt, tempDir1.path()),
|
setupQmake(defaultQt, tempDir1.path()),
|
||||||
setupQmake(defaultQt, tempDir2.path()) };
|
setupQmake(defaultQt, tempDir2.path()) };
|
||||||
|
|
||||||
for (int i = 1; i < qmakePaths.count(); ++i) {
|
for (int i = 1; i < qmakePaths.count(); ++i)
|
||||||
const Utils::FileName qp = qmakePaths.at(i);
|
QVERIFY(!QtVersionManager::version(Utils::equal(&BaseQtVersion::qmakeCommand, qmakePaths.at(i))));
|
||||||
QVERIFY(!Utils::contains(QtVersionManager::versions(),
|
|
||||||
[qp](BaseQtVersion *qt) { return qt->qmakeCommand() == qp; }));
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<DirectoryData *> testData;
|
QList<DirectoryData *> testData;
|
||||||
|
|
||||||
|
|||||||
@@ -511,15 +511,6 @@ QList<BaseQtVersion *> QtVersionManager::unsortedVersions(const BaseQtVersion::P
|
|||||||
return m_versions.values();
|
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 *> QtVersionManager::sortVersions(const QList<BaseQtVersion *> &input)
|
||||||
{
|
{
|
||||||
QList<BaseQtVersion *> result = input;
|
QList<BaseQtVersion *> result = input;
|
||||||
@@ -532,7 +523,7 @@ QList<BaseQtVersion *> QtVersionManager::validVersions(const BaseQtVersion::Pred
|
|||||||
QTC_ASSERT(isLoaded(), return { });
|
QTC_ASSERT(isLoaded(), return { });
|
||||||
auto superPredicate
|
auto superPredicate
|
||||||
= [predicate](const BaseQtVersion *v) { return v->isValid() && (!predicate || predicate(v)); };
|
= [predicate](const BaseQtVersion *v) { return v->isValid() && (!predicate || predicate(v)); };
|
||||||
return versions(superPredicate);
|
return unsortedVersions(superPredicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QtVersionManager::isValidId(int id)
|
bool QtVersionManager::isValidId(int id)
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ public:
|
|||||||
// This will *always* return at least one (Qt in Path), even if that is
|
// This will *always* return at least one (Qt in Path), even if that is
|
||||||
// unconfigured.
|
// unconfigured.
|
||||||
// Sorting is slow due to needing to potentially run qmake --query for each version
|
// 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 *> validVersions(const BaseQtVersion::Predicate &predicate = BaseQtVersion::Predicate());
|
||||||
|
|
||||||
static QList<BaseQtVersion *> unsortedVersions(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 QString winRtRunnerExe = QStringLiteral("/winrtrunner.exe");
|
||||||
const QList<BaseQtVersion *> winrtVersions
|
const QList<BaseQtVersion *> winrtVersions
|
||||||
= QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
= QtVersionManager::sortVersions(
|
||||||
|
QtVersionManager::validVersions([](const BaseQtVersion *v) {
|
||||||
return v->type() == QLatin1String(Constants::WINRT_WINRTQT)
|
return v->type() == QLatin1String(Constants::WINRT_WINRTQT)
|
||||||
|| v->type() == QLatin1String(Constants::WINRT_WINPHONEQT);
|
|| v->type() == QLatin1String(Constants::WINRT_WINPHONEQT);
|
||||||
});
|
}));
|
||||||
QString filePath;
|
QString filePath;
|
||||||
BaseQtVersion *qt = nullptr;
|
BaseQtVersion *qt = nullptr;
|
||||||
for (BaseQtVersion *v : winrtVersions) {
|
for (BaseQtVersion *v : winrtVersions) {
|
||||||
|
|||||||
Reference in New Issue
Block a user