forked from qt-creator/qt-creator
CMakePM: Avoid multiple file-api "dirty" reparsing
The m_lastReplyTimestamp was only updated in FileApiReader::endState, which can let multiple FileApiReader::dirty signal emisions. Task-number: QTCREATORBUG-31536 Change-Id: Ic69e573b769f3de2460b9571706955c45faebf32 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -42,7 +42,7 @@ FileApiReader::FileApiReader()
|
||||
QObject::connect(&m_watcher,
|
||||
&FileSystemWatcher::directoryChanged,
|
||||
this,
|
||||
&FileApiReader::replyDirectoryHasChanged);
|
||||
&FileApiReader::handleReplyDirectoryChange);
|
||||
}
|
||||
|
||||
FileApiReader::~FileApiReader()
|
||||
@@ -410,7 +410,7 @@ void FileApiReader::cmakeFinishedState(int exitCode)
|
||||
m_lastCMakeExitCode != 0);
|
||||
}
|
||||
|
||||
void FileApiReader::replyDirectoryHasChanged(const QString &directory) const
|
||||
void FileApiReader::handleReplyDirectoryChange(const QString &directory)
|
||||
{
|
||||
if (m_isParsing)
|
||||
return; // This has been triggered by ourselves, ignore.
|
||||
@@ -422,8 +422,10 @@ void FileApiReader::replyDirectoryHasChanged(const QString &directory) const
|
||||
QTC_CHECK(!dir.needsDevice());
|
||||
QTC_ASSERT(dir.path() == directory, return);
|
||||
|
||||
if (m_lastReplyTimestamp.isValid() && reply.lastModified() > m_lastReplyTimestamp)
|
||||
if (m_lastReplyTimestamp.isValid() && reply.lastModified() > m_lastReplyTimestamp) {
|
||||
m_lastReplyTimestamp = reply.lastModified();
|
||||
emit dirty();
|
||||
}
|
||||
}
|
||||
|
||||
} // CMakeProjectManager::Internal
|
||||
|
@@ -78,7 +78,7 @@ private:
|
||||
void startCMakeState(const QStringList &configurationArguments);
|
||||
void cmakeFinishedState(int exitCode);
|
||||
|
||||
void replyDirectoryHasChanged(const QString &directory) const;
|
||||
void handleReplyDirectoryChange(const QString &directory);
|
||||
void makeBackupConfiguration(bool store);
|
||||
|
||||
void writeConfigurationIntoBuildDirectory(const QStringList &configuration);
|
||||
|
Reference in New Issue
Block a user