QmakeProjectManager: Get rid of custom parse delay

Use the same update interval as the other build systems and remove
needlessly stateful logic that made it difficult to understand what's
going on.

Fixes: QTCREATORBUG-31636
Change-Id: I39ef5a9d6834f5e7f7b457e2e2466fb912ee92e2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2024-10-07 14:57:00 +02:00
parent e3474184f6
commit 37989cf7bd
3 changed files with 6 additions and 28 deletions

View File

@@ -141,26 +141,11 @@ 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

@@ -56,10 +56,7 @@ 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

@@ -68,8 +68,6 @@ using namespace Utils;
namespace QmakeProjectManager { namespace QmakeProjectManager {
namespace Internal { namespace Internal {
const int UPDATE_INTERVAL = 3000;
static Q_LOGGING_CATEGORY(qmakeBuildSystemLog, "qtc.qmake.buildsystem", QtWarningMsg); static Q_LOGGING_CATEGORY(qmakeBuildSystemLog, "qtc.qmake.buildsystem", QtWarningMsg);
#define TRACE(msg) \ #define TRACE(msg) \
@@ -204,8 +202,6 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc)
, m_qmakeVfs(new QMakeVfs) , m_qmakeVfs(new QMakeVfs)
, m_cppCodeModelUpdater(ProjectUpdaterFactory::createCppProjectUpdater()) , m_cppCodeModelUpdater(ProjectUpdaterFactory::createCppProjectUpdater())
{ {
setParseDelay(0);
m_rootProFile = std::make_unique<QmakeProFile>(this, projectFilePath()); m_rootProFile = std::make_unique<QmakeProFile>(this, projectFilePath());
connect(BuildManager::instance(), &BuildManager::buildQueueFinished, connect(BuildManager::instance(), &BuildManager::buildQueueFinished,
@@ -588,10 +584,11 @@ void QmakeBuildSystem::startAsyncTimer(QmakeProFile::AsyncUpdateDelay delay)
return; return;
} }
const int interval = qMin(parseDelay(), TRACE("delay: " << delay);
delay == QmakeProFile::ParseLater ? UPDATE_INTERVAL : 0); switch (delay) {
TRACE("interval: " << interval); case QmakeProFile::ParseNow: requestParse(); break;
requestParseWithCustomDelay(interval); case QmakeProFile::ParseLater: requestDelayedParse(); break;
}
} }
void QmakeBuildSystem::incrementPendingEvaluateFutures() void QmakeBuildSystem::incrementPendingEvaluateFutures()
@@ -666,7 +663,6 @@ bool QmakeBuildSystem::wasEvaluateCanceled()
void QmakeBuildSystem::asyncUpdate() void QmakeBuildSystem::asyncUpdate()
{ {
TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM);
setParseDelay(UPDATE_INTERVAL);
TRACE(""); TRACE("");
if (m_invalidateQmakeVfsContents) { if (m_invalidateQmakeVfsContents) {
@@ -945,7 +941,7 @@ void QmakeBuildSystem::activeTargetWasChanged(Target *t)
return; return;
m_invalidateQmakeVfsContents = true; m_invalidateQmakeVfsContents = true;
scheduleUpdateAll(QmakeProFile::ParseLater); scheduleUpdateAllNowOrLater();
} }
static void notifyChangedHelper(const FilePath &fileName, QmakeProFile *file) static void notifyChangedHelper(const FilePath &fileName, QmakeProFile *file)