From 3dcf14ea3f3dc6f9ba182ff48d7a9de2351489e8 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 8 Oct 2019 12:37:44 +0200 Subject: [PATCH] CMake: Wire up the readers only once They can not get disconnected anymore, so just wire them up once. Change-Id: I46af563e6aebe7bee00c813648bcbfab9967e766 Reviewed-by: Cristian Adam Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/builddirmanager.cpp | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index e33e5f6fc2b..9592c7180e6 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -136,20 +136,31 @@ void BuildDirManager::updateReaderType(const BuildDirParameters &p, std::function todo) { if (!m_reader || !m_reader->isCompatible(p)) { - qCDebug(cmakeBuildDirManagerLog) << "Creating new reader"; + if (m_reader) { + stopParsingAndClearState(); + qCDebug(cmakeBuildDirManagerLog) << "Creating new reader do to incompatible parameters"; + } else { + qCDebug(cmakeBuildDirManagerLog) << "Creating first reader"; + } 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); + connect(m_reader.get(), &BuildDirReader::isReadyNow, this, todo); } - QTC_ASSERT(m_reader, return); - - 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); + QTC_ASSERT(m_reader, return ); m_reader->setParameters(p); }