From c961d9fc9e73411734340dfe48cb7978ec94128d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 5 Jun 2019 15:56:37 +0200 Subject: [PATCH] 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 --- .../cmakeprojectmanager/builddirmanager.cpp | 25 ++++++++----------- .../cmakeprojectmanager/builddirreader.cpp | 5 ---- .../cmakeprojectmanager/builddirreader.h | 3 +-- .../cmakeprojectmanager/servermodereader.cpp | 7 +----- .../cmakeprojectmanager/servermodereader.h | 1 - .../cmakeprojectmanager/tealeafreader.cpp | 6 +++++ .../cmakeprojectmanager/tealeafreader.h | 2 ++ 7 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 1414718bc5e..fc443f4c767 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -107,24 +107,21 @@ void BuildDirManager::emitErrorOccured(const QString &message) const void BuildDirManager::updateReaderType(const BuildDirParameters &p, std::function 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() diff --git a/src/plugins/cmakeprojectmanager/builddirreader.cpp b/src/plugins/cmakeprojectmanager/builddirreader.cpp index 7a0a6246138..c0dea25350e 100644 --- a/src/plugins/cmakeprojectmanager/builddirreader.cpp +++ b/src/plugins/cmakeprojectmanager/builddirreader.cpp @@ -48,10 +48,5 @@ std::unique_ptr BuildDirReader::createReader(const BuildDirParam return std::make_unique(); } -void BuildDirReader::setParameters(const BuildDirParameters &p) -{ - m_parameters = p; -} - } // namespace Internal } // namespace CMakeProjectManager diff --git a/src/plugins/cmakeprojectmanager/builddirreader.h b/src/plugins/cmakeprojectmanager/builddirreader.h index 9c5e8c3e29a..9b6e9228256 100644 --- a/src/plugins/cmakeprojectmanager/builddirreader.h +++ b/src/plugins/cmakeprojectmanager/builddirreader.h @@ -53,14 +53,13 @@ class BuildDirReader : public QObject public: static std::unique_ptr createReader(const BuildDirParameters &p); - virtual void setParameters(const BuildDirParameters &p); + virtual void setParameters(const BuildDirParameters &p) = 0; virtual bool isCompatible(const BuildDirParameters &p) = 0; virtual void resetData() = 0; virtual void parse(bool forceConfiguration) = 0; virtual void stop() = 0; - virtual bool isReady() const { return true; } virtual bool isParsing() const = 0; virtual QList takeBuildTargets() = 0; diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index a0a70a8d851..fac86e923eb 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -101,7 +101,7 @@ void ServerModeReader::setParameters(const BuildDirParameters &p) CMakeTool *cmake = p.cmakeTool(); QTC_ASSERT(cmake, return); - BuildDirReader::setParameters(p); + m_parameters = p; if (!m_cmakeServer) { m_cmakeServer.reset(new ServerMode(p.environment, p.sourceDirectory, p.workDirectory, @@ -213,11 +213,6 @@ void ServerModeReader::stop() m_parser.flush(); } -bool ServerModeReader::isReady() const -{ - return m_cmakeServer->isConnected(); -} - bool ServerModeReader::isParsing() const { return static_cast(m_future); diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index b362b15b3f0..e26b3ec3cf8 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -53,7 +53,6 @@ public: void parse(bool forceConfiguration) final; void stop() final; - bool isReady() const final; bool isParsing() const final; QList takeBuildTargets() final; diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index cc8e8a01b22..0fdd4ad1ef9 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -152,6 +152,12 @@ TeaLeafReader::~TeaLeafReader() resetData(); } +void TeaLeafReader::setParameters(const BuildDirParameters &p) +{ + m_parameters = p; + emit isReadyNow(); +} + bool TeaLeafReader::isCompatible(const BuildDirParameters &p) { if (!p.cmakeTool()) diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.h b/src/plugins/cmakeprojectmanager/tealeafreader.h index 356adc81104..6e288cc54f0 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.h +++ b/src/plugins/cmakeprojectmanager/tealeafreader.h @@ -46,6 +46,8 @@ public: TeaLeafReader(); ~TeaLeafReader() final; + void setParameters(const BuildDirParameters &p) final; + bool isCompatible(const BuildDirParameters &p) final; void resetData() final; void parse(bool forceConfiguration) final;