forked from qt-creator/qt-creator
QmlJSModelManager: Avoid needless Mime database lookups
This speeds up processing of a cmake project without any QML files by a factor of 16 on my machine. Task-number: QTCREATORBUG-17884 Change-Id: I823d4a051451adbca10a8b73c17d288e03387378 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -38,6 +38,7 @@
|
|||||||
#include <projectexplorer/buildconfiguration.h>
|
#include <projectexplorer/buildconfiguration.h>
|
||||||
#include <projectexplorer/project.h>
|
#include <projectexplorer/project.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
|
#include <projectexplorer/projectnodes.h>
|
||||||
#include <projectexplorer/projecttree.h>
|
#include <projectexplorer/projecttree.h>
|
||||||
#include <projectexplorer/session.h>
|
#include <projectexplorer/session.h>
|
||||||
#include <projectexplorer/target.h>
|
#include <projectexplorer/target.h>
|
||||||
@@ -59,6 +60,8 @@
|
|||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QRegExp>
|
#include <QRegExp>
|
||||||
|
#include <QSet>
|
||||||
|
#include <QString>
|
||||||
#include <QLibraryInfo>
|
#include <QLibraryInfo>
|
||||||
#include <qglobal.h>
|
#include <qglobal.h>
|
||||||
|
|
||||||
@@ -74,20 +77,18 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject(
|
|||||||
Project *project) const
|
Project *project) const
|
||||||
{
|
{
|
||||||
ModelManagerInterface::ProjectInfo projectInfo(project);
|
ModelManagerInterface::ProjectInfo projectInfo(project);
|
||||||
Target *activeTarget = 0;
|
Target *activeTarget = nullptr;
|
||||||
if (project) {
|
if (project) {
|
||||||
QSet<QString> qmlTypeNames;
|
const QSet<QString> qmlTypeNames = { Constants::QML_MIMETYPE ,Constants::QBS_MIMETYPE,
|
||||||
qmlTypeNames << QLatin1String(Constants::QML_MIMETYPE)
|
Constants::QMLPROJECT_MIMETYPE,
|
||||||
<< QLatin1String(Constants::QBS_MIMETYPE)
|
Constants::QMLTYPES_MIMETYPE,
|
||||||
<< QLatin1String(Constants::QMLPROJECT_MIMETYPE)
|
Constants::QMLUI_MIMETYPE };
|
||||||
<< QLatin1String(Constants::QMLTYPES_MIMETYPE)
|
projectInfo.sourceFiles = project->files(Project::SourceFiles,
|
||||||
<< QLatin1String(Constants::QMLUI_MIMETYPE);
|
[&qmlTypeNames](const FileNode *fn) {
|
||||||
foreach (const QString &filePath, project->files(Project::SourceFiles)) {
|
return fn->fileType() == FileType::QML
|
||||||
if (qmlTypeNames.contains(Utils::mimeTypeForFile(
|
&& qmlTypeNames.contains(Utils::mimeTypeForFile(fn->filePath().toString(),
|
||||||
filePath, MimeMatchMode::MatchExtension).name())) {
|
MimeMatchMode::MatchExtension).name());
|
||||||
projectInfo.sourceFiles << filePath;
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
activeTarget = project->activeTarget();
|
activeTarget = project->activeTarget();
|
||||||
}
|
}
|
||||||
Kit *activeKit = activeTarget ? activeTarget->kit() : KitManager::defaultKit();
|
Kit *activeKit = activeTarget ? activeTarget->kit() : KitManager::defaultKit();
|
||||||
|
Reference in New Issue
Block a user