Maemo: Fix race condition when removing a deploy step.

This commit is contained in:
Christian Kandeler
2011-04-07 15:45:26 +02:00
parent 84babcb2bf
commit dc3ec71ab0
3 changed files with 22 additions and 2 deletions

View File

@@ -63,6 +63,8 @@ MaemoDeployStepWidget::MaemoDeployStepWidget(AbstractMaemoDeployStep *step) :
connect(list, SIGNAL(stepInserted(int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(stepMoved(int,int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(stepRemoved(int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(aboutToRemoveStep(int)),
SLOT(handleStepToBeRemoved(int)));
}
MaemoDeployStepWidget::~MaemoDeployStepWidget()
@@ -92,6 +94,14 @@ void MaemoDeployStepWidget::handleDeviceUpdate()
emit updateSummary();
}
void MaemoDeployStepWidget::handleStepToBeRemoved(int step)
{
ProjectExplorer::BuildStepList * const list
= qobject_cast<ProjectExplorer::BuildStepList *>(m_step->parent());
if (list->steps().at(step) == m_step)
disconnect(list, 0, this, 0);
}
QString MaemoDeployStepWidget::summaryText() const
{
QString error;

View File

@@ -58,6 +58,7 @@ private:
Q_SLOT void handleDeviceUpdate();
Q_SLOT void setCurrentDeviceConfig(int index);
Q_SLOT void showDeviceConfigurations();
Q_SLOT void handleStepToBeRemoved(int step);
virtual void init();
virtual QString summaryText() const;

View File

@@ -58,10 +58,11 @@ public:
virtual void init()
{
ProjectExplorer::BuildStepList * const list
= qobject_cast<BuildStepList *>(m_step->parent());
BuildStepList * const list
= qobject_cast<BuildStepList *>(m_step->parent());
connect(list, SIGNAL(stepInserted(int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(stepMoved(int,int)), SIGNAL(updateSummary()));
connect(list, SIGNAL(aboutToRemoveStep(int)), SLOT(handleStepToBeRemoved(int)));
connect(list, SIGNAL(stepRemoved(int)), SIGNAL(updateSummary()));
}
@@ -76,6 +77,14 @@ public:
}
private:
Q_SLOT void handleStepToBeRemoved(int step)
{
BuildStepList * const list
= qobject_cast<BuildStepList *>(m_step->parent());
if (list->steps().at(step) == m_step)
disconnect(list, 0, this, 0);
}
const AbstractMaemoInstallPackageToSysrootStep * const m_step;
};