aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/projectexplorer/buildsystem.cpp15
-rw-r--r--src/plugins/projectexplorer/buildsystem.h3
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp14
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h2
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;