forked from qt-creator/qt-creator
Fixes: On session restore, start less indexers.
Details: This should improve performance a bit. Instead of starting on indexer per .pro file, schedule and compress updates of ui files. And don't update if we have a full project code model update scheduled anyway. Which helps the startup case.
This commit is contained in:
@@ -845,7 +845,7 @@ void Qt4ProFileNode::updateUiFiles()
|
|||||||
}
|
}
|
||||||
addFileNodes(toAdd, this);
|
addFileNodes(toAdd, this);
|
||||||
}
|
}
|
||||||
modelManager->updateSourceFiles(toUpdate);
|
m_project->addUiFilesToCodeModel(toUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
ProFileReader *Qt4PriFileNode::createProFileReader() const
|
ProFileReader *Qt4PriFileNode::createProFileReader() const
|
||||||
|
|||||||
@@ -255,6 +255,10 @@ Qt4Project::Qt4Project(Qt4Manager *manager, const QString& fileName) :
|
|||||||
m_updateCodeModelTimer.setSingleShot(true);
|
m_updateCodeModelTimer.setSingleShot(true);
|
||||||
m_updateCodeModelTimer.setInterval(20);
|
m_updateCodeModelTimer.setInterval(20);
|
||||||
connect(&m_updateCodeModelTimer, SIGNAL(timeout()), this, SLOT(updateCodeModel()));
|
connect(&m_updateCodeModelTimer, SIGNAL(timeout()), this, SLOT(updateCodeModel()));
|
||||||
|
|
||||||
|
m_addUiFilesTimer.setSingleShot(true);
|
||||||
|
m_addUiFilesTimer.setInterval(20);
|
||||||
|
connect(&m_addUiFilesTimer, SIGNAL(timeout()), this, SLOT(addUiFiles()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt4Project::~Qt4Project()
|
Qt4Project::~Qt4Project()
|
||||||
@@ -370,6 +374,27 @@ namespace {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Qt4Project::addUiFilesToCodeModel(const QStringList &files)
|
||||||
|
{
|
||||||
|
// if we already have a full updateCodeModel() scheduled
|
||||||
|
// then we don't need to this seperately
|
||||||
|
// since that one will add also all the ui files
|
||||||
|
if (m_updateCodeModelTimer.isActive())
|
||||||
|
return;
|
||||||
|
m_addUiFilesTimer.start();
|
||||||
|
m_uiFilesToAdd << files;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Qt4Project::addUiFiles()
|
||||||
|
{
|
||||||
|
if (m_updateCodeModelTimer.isActive())
|
||||||
|
return;
|
||||||
|
CppTools::CppModelManagerInterface *modelManager =
|
||||||
|
ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>();
|
||||||
|
modelManager->updateSourceFiles(m_uiFilesToAdd);
|
||||||
|
m_uiFilesToAdd.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void Qt4Project::scheduleUpdateCodeModel()
|
void Qt4Project::scheduleUpdateCodeModel()
|
||||||
{
|
{
|
||||||
m_updateCodeModelTimer.start();
|
m_updateCodeModelTimer.start();
|
||||||
|
|||||||
@@ -182,6 +182,9 @@ public:
|
|||||||
|
|
||||||
void notifyChanged(const QString &name);
|
void notifyChanged(const QString &name);
|
||||||
|
|
||||||
|
// called by qt4ProjectNode to add ui_*.h files to the codemodel
|
||||||
|
void addUiFilesToCodeModel(const QStringList &files);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void update();
|
void update();
|
||||||
void proFileParseError(const QString &errorMessage);
|
void proFileParseError(const QString &errorMessage);
|
||||||
@@ -200,6 +203,7 @@ private slots:
|
|||||||
const Qt4ProjectManager::Internal::Qt4ProjectType oldType,
|
const Qt4ProjectManager::Internal::Qt4ProjectType oldType,
|
||||||
const Qt4ProjectManager::Internal::Qt4ProjectType newType);
|
const Qt4ProjectManager::Internal::Qt4ProjectType newType);
|
||||||
void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
|
void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node);
|
||||||
|
void addUiFiles();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &settingsReader);
|
virtual void restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &settingsReader);
|
||||||
@@ -232,6 +236,8 @@ private:
|
|||||||
Internal::Qt4ProjectFiles *m_projectFiles;
|
Internal::Qt4ProjectFiles *m_projectFiles;
|
||||||
|
|
||||||
QTimer m_updateCodeModelTimer;
|
QTimer m_updateCodeModelTimer;
|
||||||
|
QTimer m_addUiFilesTimer;
|
||||||
|
QStringList m_uiFilesToAdd;
|
||||||
Internal::GCCPreprocessor m_preproc;
|
Internal::GCCPreprocessor m_preproc;
|
||||||
|
|
||||||
friend class Qt4ProjectFile;
|
friend class Qt4ProjectFile;
|
||||||
|
|||||||
Reference in New Issue
Block a user