QmakeProjectManager: Use delay timer from base class

Change-Id: I38b55efc34b34b58430d1d665eb6672c3de89b4f
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2020-03-16 12:28:07 +01:00
parent d3f79fcc68
commit f7d91a01d1
4 changed files with 23 additions and 11 deletions

View File

@@ -142,11 +142,26 @@ void BuildSystem::requestDelayedParse()
requestParseHelper(1000); requestParseHelper(1000);
} }
void BuildSystem::requestParseWithCustomDelay(int delayInMs)
{
requestParseHelper(delayInMs);
}
void BuildSystem::cancelDelayedParseRequest() void BuildSystem::cancelDelayedParseRequest()
{ {
d->m_delayedParsingTimer.stop(); 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 bool BuildSystem::isParsing() const
{ {
return d->m_isParsing; return d->m_isParsing;

View File

@@ -62,7 +62,10 @@ public:
void requestParse(); void requestParse();
void requestDelayedParse(); void requestDelayedParse();
void requestParseWithCustomDelay(int delayInMs = 1000);
void cancelDelayedParseRequest(); void cancelDelayedParseRequest();
void setParseDelay(int delayInMs);
int parseDelay() const;
bool isParsing() const; bool isParsing() const;
bool hasParsingData() const; bool hasParsingData() const;

View File

@@ -73,6 +73,7 @@
#include <QDir> #include <QDir>
#include <QFileSystemWatcher> #include <QFileSystemWatcher>
#include <QLoggingCategory> #include <QLoggingCategory>
#include <QTimer>
using namespace QmakeProjectManager::Internal; using namespace QmakeProjectManager::Internal;
using namespace ProjectExplorer; using namespace ProjectExplorer;
@@ -187,9 +188,7 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc)
const QTextCodec *codec = Core::EditorManager::defaultTextCodec(); const QTextCodec *codec = Core::EditorManager::defaultTextCodec();
m_qmakeVfs->setTextCodec(codec); m_qmakeVfs->setTextCodec(codec);
m_asyncUpdateTimer.setSingleShot(true); setParseDelay(0);
m_asyncUpdateTimer.setInterval(0);
connect(&m_asyncUpdateTimer, &QTimer::timeout, this, &QmakeBuildSystem::asyncUpdate);
m_rootProFile = std::make_unique<QmakeProFile>(this, projectFilePath()); m_rootProFile = std::make_unique<QmakeProFile>(this, projectFilePath());
@@ -497,13 +496,10 @@ void QmakeBuildSystem::startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay)
return; return;
} }
const int interval = qMin(m_asyncUpdateTimer.interval(), const int interval = qMin(parseDelay(),
delay == QmakeProFile::ParseLater ? UPDATE_INTERVAL : 0); delay == QmakeProFile::ParseLater ? UPDATE_INTERVAL : 0);
qCDebug(qmakeBuildSystemLog) << __FUNCTION__ << interval; qCDebug(qmakeBuildSystemLog) << __FUNCTION__ << interval;
requestParseWithCustomDelay(interval);
m_asyncUpdateTimer.stop();
m_asyncUpdateTimer.setInterval(interval);
m_asyncUpdateTimer.start();
} }
void QmakeBuildSystem::incrementPendingEvaluateFutures() void QmakeBuildSystem::incrementPendingEvaluateFutures()
@@ -564,7 +560,7 @@ bool QmakeBuildSystem::wasEvaluateCanceled()
void QmakeBuildSystem::asyncUpdate() void QmakeBuildSystem::asyncUpdate()
{ {
m_asyncUpdateTimer.setInterval(UPDATE_INTERVAL); setParseDelay(UPDATE_INTERVAL);
qCDebug(qmakeBuildSystemLog) << __FUNCTION__; qCDebug(qmakeBuildSystemLog) << __FUNCTION__;
if (m_invalidateQmakeVfsContents) { if (m_invalidateQmakeVfsContents) {

View File

@@ -35,7 +35,6 @@
#include <QStringList> #include <QStringList>
#include <QFutureInterface> #include <QFutureInterface>
#include <QTimer>
#include <QFuture> #include <QFuture>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
@@ -189,7 +188,6 @@ public:
QString m_qmakeSysroot; QString m_qmakeSysroot;
QTimer m_asyncUpdateTimer;
QFutureInterface<void> m_asyncUpdateFutureInterface; QFutureInterface<void> m_asyncUpdateFutureInterface;
int m_pendingEvaluateFuturesCount = 0; int m_pendingEvaluateFuturesCount = 0;
AsyncUpdateState m_asyncUpdateState = Base; AsyncUpdateState m_asyncUpdateState = Base;