Qbs: Work around recent regression in build config connections

... by using direct calls instead of relying on project subscribtions.

Amends  4c80380478.

This is arguably even progress by itself as the direct call is
cheaper than the signalling.

Change-Id: I63400e76826db4517a5a5865e17620c131c69dce
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-08-02 10:09:42 +02:00
parent dcb892cf39
commit 1dfa84c362
3 changed files with 14 additions and 3 deletions

View File

@@ -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))

View File

@@ -78,6 +78,7 @@ signals:
private:
bool fromMap(const QVariantMap &map) override;
void triggerReparseIfActive();
QStringList m_changedFiles;
QStringList m_activeFileTags;

View File

@@ -150,9 +150,6 @@ QbsProject::QbsProject(const FilePath &fileName) :
if (static_cast<ProjectConfiguration *>(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);