diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2020-03-03 12:30:28 +0100 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2020-03-03 12:50:17 +0000 |
commit | 07cbc49d33bdb2308639972013d358d0c112e5a5 (patch) | |
tree | 884981330aa42fc478c3249f403ff7e955183a4c /src/plugins/qmlprojectmanager | |
parent | 40899c7209c5054502361cc0c383be36fec82e54 (diff) |
Allow blocking auto files refresh
While importing assets, qml files are generated under the import
path and this triggers files update every time a file is added.
This results into high CPU usage.
Task-number: QDS-1675
Change-Id: Ia0775ef78bbffedfaf2c140365ee31718e7ee3a4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/qmlprojectmanager')
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlproject.cpp | 9 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlproject.h | 21 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index fc622179ca..fe7542e8cb 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -57,11 +57,16 @@ #include <QDebug> #include <QRegularExpression> #include <QTextCodec> +#include <QLoggingCategory> using namespace Core; using namespace ProjectExplorer; using namespace QmlProjectManager::Internal; +namespace { +Q_LOGGING_CATEGORY(infoLogger, "QmlProjectManager.QmlBuildSystem", QtInfoMsg) +} + namespace QmlProjectManager { QmlProject::QmlProject(const Utils::FilePath &fileName) @@ -276,6 +281,10 @@ QStringList QmlBuildSystem::makeAbsolute(const Utils::FilePath &path, const QStr void QmlBuildSystem::refreshFiles(const QSet<QString> &/*added*/, const QSet<QString> &removed) { + if (m_blockFilesUpdate) { + qCDebug(infoLogger) << "Auto files refresh blocked."; + return; + } refresh(Files); if (!removed.isEmpty()) { if (auto modelManager = QmlJS::ModelManagerInterface::instance()) diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 0cff152898..acd8bc1094 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -104,6 +104,27 @@ public: QPointer<QmlProjectItem> m_projectItem; Utils::FilePath m_canonicalProjectDir; + +private: + bool m_blockFilesUpdate = false; + friend class FilesUpdateBlocker; +}; + +class FilesUpdateBlocker { +public: + FilesUpdateBlocker(QmlBuildSystem* bs): m_bs(bs) { + if (m_bs) + m_bs->m_blockFilesUpdate = true; + } + + ~FilesUpdateBlocker() { + if (m_bs) { + m_bs->m_blockFilesUpdate = false; + m_bs->refresh(QmlBuildSystem::Everything); + } + } +private: + QPointer<QmlBuildSystem> m_bs; }; class QMLPROJECTMANAGER_EXPORT QmlProject : public ProjectExplorer::Project |