From 1dfa84c362db5a23841e0e5e893bc8f6e5c46129 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 2 Aug 2019 10:09:42 +0200 Subject: [PATCH] Qbs: Work around recent regression in build config connections ... by using direct calls instead of relying on project subscribtions. Amends 4c80380478e. This is arguably even progress by itself as the direct call is cheaper than the signalling. Change-Id: I63400e76826db4517a5a5865e17620c131c69dce Reviewed-by: Christian Kandeler --- .../qbsprojectmanager/qbsbuildconfiguration.cpp | 13 +++++++++++++ .../qbsprojectmanager/qbsbuildconfiguration.h | 1 + src/plugins/qbsprojectmanager/qbsproject.cpp | 3 --- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 5efcd81532b..a2081531d44 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -88,6 +88,13 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id) connect(project(), &Project::parsingStarted, this, &BuildConfiguration::enabledChanged); connect(project(), &Project::parsingFinished, this, &BuildConfiguration::enabledChanged); + + connect(this, &BuildConfiguration::environmentChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); + connect(this, &BuildConfiguration::buildDirectoryChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); + connect(this, &QbsBuildConfiguration::qbsConfigurationChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); } void QbsBuildConfiguration::initialize(const BuildInfo &info) @@ -129,6 +136,12 @@ void QbsBuildConfiguration::initialize(const BuildInfo &info) emit qbsConfigurationChanged(); } +void QbsBuildConfiguration::triggerReparseIfActive() +{ + if (isActive()) + qbsProject()->delayParsing(); +} + bool QbsBuildConfiguration::fromMap(const QVariantMap &map) { if (!BuildConfiguration::fromMap(map)) diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 702e03ce4e9..6e74540a399 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -78,6 +78,7 @@ signals: private: bool fromMap(const QVariantMap &map) override; + void triggerReparseIfActive(); QStringList m_changedFiles; QStringList m_activeFileTags; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 8aa7480cf96..1418147d80b 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -150,9 +150,6 @@ QbsProject::QbsProject(const FilePath &fileName) : if (static_cast(sender())->isActive()) delayParsing(); }; - subscribeSignal(&BuildConfiguration::environmentChanged, this, delayedParsing); - subscribeSignal(&BuildConfiguration::buildDirectoryChanged, this, delayedParsing); - subscribeSignal(&QbsBuildConfiguration::qbsConfigurationChanged, this, delayedParsing); subscribeSignal(&Target::activeBuildConfigurationChanged, this, delayedParsing); connect(&m_parsingDelay, &QTimer::timeout, this, &QbsProject::startParsing);