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,
|
QObject::connect(&m_watcher,
|
||||||
&FileSystemWatcher::directoryChanged,
|
&FileSystemWatcher::directoryChanged,
|
||||||
this,
|
this,
|
||||||
&FileApiReader::replyDirectoryHasChanged);
|
&FileApiReader::handleReplyDirectoryChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileApiReader::~FileApiReader()
|
FileApiReader::~FileApiReader()
|
||||||
@@ -410,7 +410,7 @@ void FileApiReader::cmakeFinishedState(int exitCode)
|
|||||||
m_lastCMakeExitCode != 0);
|
m_lastCMakeExitCode != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileApiReader::replyDirectoryHasChanged(const QString &directory) const
|
void FileApiReader::handleReplyDirectoryChange(const QString &directory)
|
||||||
{
|
{
|
||||||
if (m_isParsing)
|
if (m_isParsing)
|
||||||
return; // This has been triggered by ourselves, ignore.
|
return; // This has been triggered by ourselves, ignore.
|
||||||
@@ -422,8 +422,10 @@ void FileApiReader::replyDirectoryHasChanged(const QString &directory) const
|
|||||||
QTC_CHECK(!dir.needsDevice());
|
QTC_CHECK(!dir.needsDevice());
|
||||||
QTC_ASSERT(dir.path() == directory, return);
|
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();
|
emit dirty();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // CMakeProjectManager::Internal
|
} // CMakeProjectManager::Internal
|
||||||
|
@@ -78,7 +78,7 @@ private:
|
|||||||
void startCMakeState(const QStringList &configurationArguments);
|
void startCMakeState(const QStringList &configurationArguments);
|
||||||
void cmakeFinishedState(int exitCode);
|
void cmakeFinishedState(int exitCode);
|
||||||
|
|
||||||
void replyDirectoryHasChanged(const QString &directory) const;
|
void handleReplyDirectoryChange(const QString &directory);
|
||||||
void makeBackupConfiguration(bool store);
|
void makeBackupConfiguration(bool store);
|
||||||
|
|
||||||
void writeConfigurationIntoBuildDirectory(const QStringList &configuration);
|
void writeConfigurationIntoBuildDirectory(const QStringList &configuration);
|
||||||
|
Reference in New Issue
Block a user