aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-04-17 08:09:55 +0200
committerEike Ziller <eike.ziller@qt.io>2020-04-17 08:09:55 +0200
commit602d690baba3784e1761037e787f0e7d14af5a8a (patch)
tree4923aa77ad98f6cb88a98e4d34cd5d30dda2c926 /src/plugins/qbsprojectmanager
parent2795292c74ff64d06b12eeed5c41bd107c3ce5b9 (diff)
parente85c0746215609b6c2efcd30a7b3407b3de21c17 (diff)
Merge remote-tracking branch 'origin/4.12'
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp8
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp9
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.h2
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.cpp9
-rw-r--r--src/plugins/qbsprojectmanager/qbscleanstep.h2
5 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index eb6be29f10..33e41c31c7 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -159,6 +159,14 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
QbsBuildConfiguration::~QbsBuildConfiguration()
{
+ for (BuildStep * const bs : buildSteps()->steps()) {
+ if (const auto qbs = qobject_cast<QbsBuildStep *>(bs))
+ qbs->dropSession();
+ }
+ for (BuildStep * const cs : cleanSteps()->steps()) {
+ if (const auto qcs = qobject_cast<QbsCleanStep *>(cs))
+ qcs->dropSession();
+ }
delete m_buildSystem;
}
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index fb5ca63f91..d403ad0589 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -537,6 +537,15 @@ QbsBuildStepData QbsBuildStep::stepData() const
return data;
}
+void QbsBuildStep::dropSession()
+{
+ if (m_session) {
+ doCancel();
+ m_session->disconnect(this);
+ m_session = nullptr;
+ }
+}
+
// --------------------------------------------------------------------
// QbsBuildStepConfigWidget:
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h
index 53ef60ed7e..f0906936b6 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h
@@ -73,6 +73,8 @@ public:
QbsBuildSystem *qbsBuildSystem() const;
QbsBuildStepData stepData() const;
+ void dropSession();
+
signals:
void qbsConfigurationChanged();
void qbsBuildOptionsChanged();
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
index f6753fa411..07adf568d2 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp
@@ -85,6 +85,15 @@ QbsCleanStep::~QbsCleanStep()
m_session->disconnect(this);
}
+void QbsCleanStep::dropSession()
+{
+ if (m_session) {
+ doCancel();
+ m_session->disconnect(this);
+ m_session = nullptr;
+ }
+}
+
bool QbsCleanStep::init()
{
if (buildSystem()->isParsing() || m_session)
diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.h b/src/plugins/qbsprojectmanager/qbscleanstep.h
index 24aac0008e..81a51351da 100644
--- a/src/plugins/qbsprojectmanager/qbscleanstep.h
+++ b/src/plugins/qbsprojectmanager/qbscleanstep.h
@@ -46,6 +46,8 @@ public:
QbsBuildStepData stepData() const;
+ void dropSession();
+
private:
bool init() override;
void doRun() override;