Qbs: Improve performance even further...

setupFolder is called recursively...

Change-Id: Ief1d1d45294a3821f5496d832a2130a8ff779f44
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2016-02-22 15:49:14 +02:00
committed by Orgad Shaneh
parent 0642c10512
commit c632ce44f7
2 changed files with 14 additions and 10 deletions

View File

@@ -453,11 +453,17 @@ void QbsGroupNode::setupFiles(ProjectExplorer::FolderNode *root, const qbs::Grou
FileTreeNode::reorder(&tree, productPath); FileTreeNode::reorder(&tree, productPath);
FileTreeNode::simplify(&tree); FileTreeNode::simplify(&tree);
setupFolder(root, group, &tree, productPath, updateExisting); QHash<QString, ProjectExplorer::FileType> fileTypeHash;
foreach (const qbs::SourceArtifact &sa, group.allSourceArtifacts())
fileTypeHash[sa.filePath()] = fileType(sa);
setupFolder(root, fileTypeHash, &tree, productPath, updateExisting);
} }
void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::GroupData &group, void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
const FileTreeNode *fileTree, const QString &baseDir, const QHash<QString, ProjectExplorer::FileType> &fileTypeHash,
const FileTreeNode *fileTree,
const QString &baseDir,
bool updateExisting) bool updateExisting)
{ {
// We only need to care about FileNodes and FolderNodes here. Everything else is // We only need to care about FileNodes and FolderNodes here. Everything else is
@@ -479,10 +485,6 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro
foldersToRemove.append(fn); foldersToRemove.append(fn);
} }
QHash<QString, ProjectExplorer::FileType> fileTypeHash;
foreach (const qbs::SourceArtifact &sa, group.allSourceArtifacts())
fileTypeHash[sa.filePath()] = fileType(sa);
foreach (FileTreeNode *c, fileTree->children) { foreach (FileTreeNode *c, fileTree->children) {
Utils::FileName path = Utils::FileName::fromString(c->path()); Utils::FileName path = Utils::FileName::fromString(c->path());
const ProjectExplorer::FileType newFileType = const ProjectExplorer::FileType newFileType =
@@ -537,7 +539,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro
if (isQrcFile) if (isQrcFile)
static_cast<ResourceTopLevelNode *>(fn)->update(); static_cast<ResourceTopLevelNode *>(fn)->update();
else else
setupFolder(fn, group, c, c->path(), updateExisting); setupFolder(fn, fileTypeHash, c, c->path(), updateExisting);
} }
} }

View File

@@ -106,8 +106,10 @@ public:
const QString &productPath, bool updateExisting); const QString &productPath, bool updateExisting);
private: private:
static void setupFolder(ProjectExplorer::FolderNode *folder, const qbs::GroupData &group, static void setupFolder(ProjectExplorer::FolderNode *folder,
const FileTreeNode *subFileTree, const QString &baseDir, bool updateExisting); const QHash<QString, ProjectExplorer::FileType> &fileTypeHash,
const FileTreeNode *subFileTree, const QString &baseDir,
bool updateExisting);
static ProjectExplorer::FileType fileType(const qbs::SourceArtifact &artifact); static ProjectExplorer::FileType fileType(const qbs::SourceArtifact &artifact);
qbs::GroupData m_qbsGroupData; qbs::GroupData m_qbsGroupData;