forked from qt-creator/qt-creator
RunControl: Check autoDelete state on finish
Amends a5ecc6207b
Change-Id: I0a762fb41e00416f295f9d71cc23091799359f07
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -309,6 +309,7 @@ public:
|
|||||||
bool supportsReRunning() const;
|
bool supportsReRunning() const;
|
||||||
bool isUsingTaskTree() const { return bool(m_runRecipe); }
|
bool isUsingTaskTree() const { return bool(m_runRecipe); }
|
||||||
void startTaskTree();
|
void startTaskTree();
|
||||||
|
void checkAutoDeleteAndEmitStopped();
|
||||||
|
|
||||||
RunControl *q;
|
RunControl *q;
|
||||||
Id runMode;
|
Id runMode;
|
||||||
@@ -445,7 +446,7 @@ void RunControl::initiateStop()
|
|||||||
{
|
{
|
||||||
if (d->isUsingTaskTree()) {
|
if (d->isUsingTaskTree()) {
|
||||||
d->m_taskTree.reset();
|
d->m_taskTree.reset();
|
||||||
emit stopped();
|
d->checkAutoDeleteAndEmitStopped();
|
||||||
} else {
|
} else {
|
||||||
d->initiateStop();
|
d->initiateStop();
|
||||||
}
|
}
|
||||||
@@ -1052,13 +1053,24 @@ void RunControlPrivate::startTaskTree()
|
|||||||
connect(m_taskTree.get(), &TaskTree::started, q, &RunControl::started);
|
connect(m_taskTree.get(), &TaskTree::started, q, &RunControl::started);
|
||||||
const auto finalize = [this] {
|
const auto finalize = [this] {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
emit q->stopped();
|
checkAutoDeleteAndEmitStopped();
|
||||||
};
|
};
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, finalize);
|
connect(m_taskTree.get(), &TaskTree::done, this, finalize);
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, finalize);
|
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, finalize);
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RunControlPrivate::checkAutoDeleteAndEmitStopped()
|
||||||
|
{
|
||||||
|
if (autoDelete) {
|
||||||
|
debugMessage("All finished. Deleting myself");
|
||||||
|
q->deleteLater();
|
||||||
|
} else {
|
||||||
|
q->setApplicationProcessHandle(Utils::ProcessHandle());
|
||||||
|
}
|
||||||
|
emit q->stopped();
|
||||||
|
}
|
||||||
|
|
||||||
bool RunControl::isRunning() const
|
bool RunControl::isRunning() const
|
||||||
{
|
{
|
||||||
if (d->isUsingTaskTree())
|
if (d->isUsingTaskTree())
|
||||||
@@ -1160,13 +1172,7 @@ void RunControlPrivate::setState(RunControlState newState)
|
|||||||
emit q->started();
|
emit q->started();
|
||||||
break;
|
break;
|
||||||
case RunControlState::Stopped:
|
case RunControlState::Stopped:
|
||||||
if (autoDelete) {
|
checkAutoDeleteAndEmitStopped();
|
||||||
debugMessage("All finished. Deleting myself");
|
|
||||||
q->deleteLater();
|
|
||||||
} else {
|
|
||||||
q->setApplicationProcessHandle(Utils::ProcessHandle());
|
|
||||||
}
|
|
||||||
emit q->stopped();
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user