CMake: Make all readers use isReadyNow() signal

The tealeafreader used to not ever use this signal and used
the isReady() method to short-circuit the whole mechanism.

Change-Id: I2f7caedeedf977c70a5d7807e3a92775757a6fef
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Tobias Hunger
2019-06-05 15:56:37 +02:00
parent 76fc2e0b26
commit c961d9fc9e
7 changed files with 21 additions and 28 deletions

View File

@@ -107,24 +107,21 @@ void BuildDirManager::emitErrorOccured(const QString &message) const
void BuildDirManager::updateReaderType(const BuildDirParameters &p,
std::function<void()> todo)
{
if (!m_reader || !m_reader->isCompatible(p)) {
if (!m_reader || !m_reader->isCompatible(p))
m_reader = BuildDirReader::createReader(p);
connect(m_reader.get(), &BuildDirReader::configurationStarted,
this, &BuildDirManager::parsingStarted);
connect(m_reader.get(), &BuildDirReader::dataAvailable,
this, &BuildDirManager::emitDataAvailable);
connect(m_reader.get(), &BuildDirReader::errorOccured,
this, &BuildDirManager::emitErrorOccured);
connect(m_reader.get(), &BuildDirReader::dirty, this, &BuildDirManager::becameDirty);
}
QTC_ASSERT(m_reader, return);
m_reader->setParameters(p);
connect(m_reader.get(), &BuildDirReader::configurationStarted,
this, &BuildDirManager::parsingStarted);
connect(m_reader.get(), &BuildDirReader::dataAvailable,
this, &BuildDirManager::emitDataAvailable);
connect(m_reader.get(), &BuildDirReader::errorOccured,
this, &BuildDirManager::emitErrorOccured);
connect(m_reader.get(), &BuildDirReader::dirty, this, &BuildDirManager::becameDirty);
connect(m_reader.get(), &BuildDirReader::isReadyNow, this, todo);
if (m_reader->isReady())
todo();
else
connect(m_reader.get(), &BuildDirReader::isReadyNow, this, todo);
m_reader->setParameters(p);
}
bool BuildDirManager::hasConfigChanged()