diff options
-rw-r--r-- | src/plugins/projectexplorer/buildsystem.cpp | 15 | ||||
-rw-r--r-- | src/plugins/projectexplorer/buildsystem.h | 3 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.cpp | 14 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakeproject.h | 2 |
4 files changed, 23 insertions, 11 deletions
diff --git a/src/plugins/projectexplorer/buildsystem.cpp b/src/plugins/projectexplorer/buildsystem.cpp index 6c3153261b..851a2565bc 100644 --- a/src/plugins/projectexplorer/buildsystem.cpp +++ b/src/plugins/projectexplorer/buildsystem.cpp @@ -142,11 +142,26 @@ void BuildSystem::requestDelayedParse() requestParseHelper(1000); } +void BuildSystem::requestParseWithCustomDelay(int delayInMs) +{ + requestParseHelper(delayInMs); +} + void BuildSystem::cancelDelayedParseRequest() { d->m_delayedParsingTimer.stop(); } +void BuildSystem::setParseDelay(int delayInMs) +{ + d->m_delayedParsingTimer.setInterval(delayInMs); +} + +int BuildSystem::parseDelay() const +{ + return d->m_delayedParsingTimer.interval(); +} + bool BuildSystem::isParsing() const { return d->m_isParsing; diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index 2c53a32d49..c12e75e9c4 100644 --- a/src/plugins/projectexplorer/buildsystem.h +++ b/src/plugins/projectexplorer/buildsystem.h @@ -62,7 +62,10 @@ public: void requestParse(); void requestDelayedParse(); + void requestParseWithCustomDelay(int delayInMs = 1000); void cancelDelayedParseRequest(); + void setParseDelay(int delayInMs); + int parseDelay() const; bool isParsing() const; bool hasParsingData() const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 14fd924665..15040d8f94 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -73,6 +73,7 @@ #include <QDir> #include <QFileSystemWatcher> #include <QLoggingCategory> +#include <QTimer> using namespace QmakeProjectManager::Internal; using namespace ProjectExplorer; @@ -187,9 +188,7 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc) const QTextCodec *codec = Core::EditorManager::defaultTextCodec(); m_qmakeVfs->setTextCodec(codec); - m_asyncUpdateTimer.setSingleShot(true); - m_asyncUpdateTimer.setInterval(0); - connect(&m_asyncUpdateTimer, &QTimer::timeout, this, &QmakeBuildSystem::asyncUpdate); + setParseDelay(0); m_rootProFile = std::make_unique<QmakeProFile>(this, projectFilePath()); @@ -497,13 +496,10 @@ void QmakeBuildSystem::startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay) return; } - const int interval = qMin(m_asyncUpdateTimer.interval(), + const int interval = qMin(parseDelay(), delay == QmakeProFile::ParseLater ? UPDATE_INTERVAL : 0); qCDebug(qmakeBuildSystemLog) << __FUNCTION__ << interval; - - m_asyncUpdateTimer.stop(); - m_asyncUpdateTimer.setInterval(interval); - m_asyncUpdateTimer.start(); + requestParseWithCustomDelay(interval); } void QmakeBuildSystem::incrementPendingEvaluateFutures() @@ -564,7 +560,7 @@ bool QmakeBuildSystem::wasEvaluateCanceled() void QmakeBuildSystem::asyncUpdate() { - m_asyncUpdateTimer.setInterval(UPDATE_INTERVAL); + setParseDelay(UPDATE_INTERVAL); qCDebug(qmakeBuildSystemLog) << __FUNCTION__; if (m_invalidateQmakeVfsContents) { diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 4abc5309c5..c25dfcc32d 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -35,7 +35,6 @@ #include <QStringList> #include <QFutureInterface> -#include <QTimer> #include <QFuture> QT_BEGIN_NAMESPACE @@ -189,7 +188,6 @@ public: QString m_qmakeSysroot; - QTimer m_asyncUpdateTimer; QFutureInterface<void> m_asyncUpdateFutureInterface; int m_pendingEvaluateFuturesCount = 0; AsyncUpdateState m_asyncUpdateState = Base; |