forked from qt-creator/qt-creator
TaskTree: Unify done / errorOccurred signals
Get rid of TaskTree::errorOccurred signal. Provide additional DoneResult arg for done signal. Task-number: QTCREATORBUG-29834 Change-Id: I31a3a0701a14246b01f65303a1295f014c855ecf Reviewed-by: hjk <hjk@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -985,8 +985,7 @@ public:
|
|||||||
void advanceProgress(int byValue);
|
void advanceProgress(int byValue);
|
||||||
void emitStartedAndProgress();
|
void emitStartedAndProgress();
|
||||||
void emitProgress();
|
void emitProgress();
|
||||||
void emitDone();
|
void emitDone(DoneWith result);
|
||||||
void emitError();
|
|
||||||
QList<TreeStorageBase> addStorages(const QList<TreeStorageBase> &storages);
|
QList<TreeStorageBase> addStorages(const QList<TreeStorageBase> &storages);
|
||||||
void callSetupHandler(TreeStorageBase storage, int storageId) {
|
void callSetupHandler(TreeStorageBase storage, int storageId) {
|
||||||
callStorageHandler(storage, storageId, &StorageHandler::m_setupHandler);
|
callStorageHandler(storage, storageId, &StorageHandler::m_setupHandler);
|
||||||
@@ -1119,13 +1118,8 @@ void TaskTreePrivate::stop()
|
|||||||
QTC_ASSERT(m_root, return);
|
QTC_ASSERT(m_root, return);
|
||||||
if (!m_root->isRunning())
|
if (!m_root->isRunning())
|
||||||
return;
|
return;
|
||||||
// TODO: should we have canceled flag (passed to handler)?
|
|
||||||
// Just one done handler with result flag:
|
|
||||||
// FinishedWithSuccess, FinishedWithError, Canceled, TimedOut.
|
|
||||||
// Canceled either directly by user, or by workflow policy - doesn't matter, in both
|
|
||||||
// cases canceled from outside.
|
|
||||||
m_root->stop();
|
m_root->stop();
|
||||||
emitError();
|
emitDone(DoneWith::Cancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskTreePrivate::advanceProgress(int byValue)
|
void TaskTreePrivate::advanceProgress(int byValue)
|
||||||
@@ -1151,18 +1145,11 @@ void TaskTreePrivate::emitProgress()
|
|||||||
emit q->progressValueChanged(m_progressValue);
|
emit q->progressValueChanged(m_progressValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskTreePrivate::emitDone()
|
void TaskTreePrivate::emitDone(DoneWith result)
|
||||||
{
|
{
|
||||||
QTC_CHECK(m_progressValue == m_root->taskCount());
|
QTC_CHECK(m_progressValue == m_root->taskCount());
|
||||||
GuardLocker locker(m_guard);
|
GuardLocker locker(m_guard);
|
||||||
emit q->done();
|
emit q->done(result);
|
||||||
}
|
|
||||||
|
|
||||||
void TaskTreePrivate::emitError()
|
|
||||||
{
|
|
||||||
QTC_CHECK(m_progressValue == m_root->taskCount());
|
|
||||||
GuardLocker locker(m_guard);
|
|
||||||
emit q->errorOccurred();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<TreeStorageBase> TaskTreePrivate::addStorages(const QList<TreeStorageBase> &storages)
|
QList<TreeStorageBase> TaskTreePrivate::addStorages(const QList<TreeStorageBase> &storages)
|
||||||
@@ -1348,10 +1335,8 @@ SetupResult TaskContainer::continueStart(SetupResult startAction, int nextChild)
|
|||||||
QTC_CHECK(parentContainer->isRunning());
|
QTC_CHECK(parentContainer->isRunning());
|
||||||
if (!parentContainer->isStarting())
|
if (!parentContainer->isStarting())
|
||||||
parentContainer->childDone(success);
|
parentContainer->childDone(success);
|
||||||
} else if (success) {
|
|
||||||
m_constData.m_taskTreePrivate->emitDone();
|
|
||||||
} else {
|
} else {
|
||||||
m_constData.m_taskTreePrivate->emitError();
|
m_constData.m_taskTreePrivate->emitDone(success ? DoneWith::Success : DoneWith::Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return groupAction;
|
return groupAction;
|
||||||
@@ -2338,20 +2323,16 @@ bool TaskTree::runBlocking(const QFuture<void> &future)
|
|||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
|
connect(this, &TaskTree::done, &loop, [&loop, &ok](DoneWith result) {
|
||||||
const auto finalize = [&loop, &ok](bool success) {
|
ok = result == DoneWith::Success;
|
||||||
ok = success;
|
|
||||||
// Otherwise, the tasks from inside the running tree that were deleteLater()
|
// Otherwise, the tasks from inside the running tree that were deleteLater()
|
||||||
// will be leaked. Refer to the QObject::deleteLater() docs.
|
// will be leaked. Refer to the QObject::deleteLater() docs.
|
||||||
QMetaObject::invokeMethod(&loop, [&loop] { loop.quit(); }, Qt::QueuedConnection);
|
QMetaObject::invokeMethod(&loop, [&loop] { loop.quit(); }, Qt::QueuedConnection);
|
||||||
};
|
});
|
||||||
|
|
||||||
QFutureWatcher<void> watcher;
|
QFutureWatcher<void> watcher;
|
||||||
connect(&watcher, &QFutureWatcherBase::canceled, this, &TaskTree::stop);
|
connect(&watcher, &QFutureWatcherBase::canceled, this, &TaskTree::stop);
|
||||||
watcher.setFuture(future);
|
watcher.setFuture(future);
|
||||||
|
|
||||||
connect(this, &TaskTree::done, &loop, [finalize] { finalize(true); });
|
|
||||||
connect(this, &TaskTree::errorOccurred, &loop, [finalize] { finalize(false); });
|
|
||||||
QTimer::singleShot(0, this, &TaskTree::start);
|
QTimer::singleShot(0, this, &TaskTree::start);
|
||||||
|
|
||||||
loop.exec(QEventLoop::ExcludeUserInputEvents);
|
loop.exec(QEventLoop::ExcludeUserInputEvents);
|
||||||
@@ -2558,8 +2539,8 @@ void TaskTree::setupStorageHandler(const TreeStorageBase &storage,
|
|||||||
|
|
||||||
TaskTreeTaskAdapter::TaskTreeTaskAdapter()
|
TaskTreeTaskAdapter::TaskTreeTaskAdapter()
|
||||||
{
|
{
|
||||||
connect(task(), &TaskTree::done, this, [this] { emit done(true); });
|
connect(task(), &TaskTree::done, this,
|
||||||
connect(task(), &TaskTree::errorOccurred, this, [this] { emit done(false); });
|
[this](DoneWith result) { emit done(result == DoneWith::Success); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskTreeTaskAdapter::start()
|
void TaskTreeTaskAdapter::start()
|
||||||
|
@@ -482,7 +482,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void started();
|
void started();
|
||||||
void done();
|
void done(DoneWith result);
|
||||||
void errorOccurred();
|
void errorOccurred();
|
||||||
void progressValueChanged(int value); // updated whenever task finished / skipped / stopped
|
void progressValueChanged(int value); // updated whenever task finished / skipped / stopped
|
||||||
|
|
||||||
|
@@ -32,12 +32,10 @@ public:
|
|||||||
|
|
||||||
const GroupItem task = m_filePath.needsDevice() ? remoteTask() : localTask();
|
const GroupItem task = m_filePath.needsDevice() ? remoteTask() : localTask();
|
||||||
m_taskTree.reset(new TaskTree({task}));
|
m_taskTree.reset(new TaskTree({task}));
|
||||||
const auto finalize = [this](bool success) {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
emit done(success);
|
emit done(result == DoneWith::Success);
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, [=] { finalize(true); });
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [=] { finalize(false); });
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -466,14 +464,12 @@ void FileStreamer::start()
|
|||||||
// TODO: Preliminary check if local source exists?
|
// TODO: Preliminary check if local source exists?
|
||||||
QTC_ASSERT(!d->m_taskTree, return);
|
QTC_ASSERT(!d->m_taskTree, return);
|
||||||
d->m_taskTree.reset(new TaskTree({d->task()}));
|
d->m_taskTree.reset(new TaskTree({d->task()}));
|
||||||
const auto finalize = [this](bool success) {
|
connect(d->m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
d->m_streamResult = success ? StreamResult::FinishedWithSuccess
|
d->m_streamResult = result == DoneWith::Success ? StreamResult::FinishedWithSuccess
|
||||||
: StreamResult::FinishedWithError;
|
: StreamResult::FinishedWithError;
|
||||||
d->m_taskTree.release()->deleteLater();
|
d->m_taskTree.release()->deleteLater();
|
||||||
emit done();
|
emit done();
|
||||||
};
|
});
|
||||||
connect(d->m_taskTree.get(), &TaskTree::done, this, [=] { finalize(true); });
|
|
||||||
connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, [=] { finalize(false); });
|
|
||||||
d->m_taskTree->start();
|
d->m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -188,12 +188,10 @@ void AndroidSdkDownloader::downloadAndExtractSdk()
|
|||||||
};
|
};
|
||||||
|
|
||||||
m_taskTree.reset(new TaskTree(root));
|
m_taskTree.reset(new TaskTree(root));
|
||||||
const auto onDone = [this] {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
m_progressDialog.reset();
|
m_progressDialog.reset();
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, onDone);
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, onDone);
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -390,11 +390,11 @@ void TestCodeParser::scanForTests(const QSet<FilePath> &filePaths,
|
|||||||
tasks.append(AsyncTask<TestParseResultPtr>(onSetup, onDone, CallDoneIf::Success));
|
tasks.append(AsyncTask<TestParseResultPtr>(onSetup, onDone, CallDoneIf::Success));
|
||||||
}
|
}
|
||||||
m_taskTree.reset(new TaskTree{tasks});
|
m_taskTree.reset(new TaskTree{tasks});
|
||||||
const auto onDone = [this] { m_taskTree.release()->deleteLater(); onFinished(true); };
|
|
||||||
const auto onError = [this] { m_taskTree.release()->deleteLater(); onFinished(false); };
|
|
||||||
connect(m_taskTree.get(), &TaskTree::started, this, &TestCodeParser::parsingStarted);
|
connect(m_taskTree.get(), &TaskTree::started, this, &TestCodeParser::parsingStarted);
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, onDone);
|
connect(m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, onError);
|
m_taskTree.release()->deleteLater();
|
||||||
|
onFinished(result == DoneWith::Success);
|
||||||
|
});
|
||||||
if (filteredFiles.size() > 5) {
|
if (filteredFiles.size() > 5) {
|
||||||
auto progress = new TaskProgress(m_taskTree.get());
|
auto progress = new TaskProgress(m_taskTree.get());
|
||||||
progress->setDisplayName(Tr::tr("Scanning for Tests"));
|
progress->setDisplayName(Tr::tr("Scanning for Tests"));
|
||||||
|
@@ -455,7 +455,6 @@ void TestRunner::runTestsHelper()
|
|||||||
|
|
||||||
m_taskTree.reset(new TaskTree(tasks));
|
m_taskTree.reset(new TaskTree(tasks));
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, &TestRunner::onFinished);
|
connect(m_taskTree.get(), &TaskTree::done, this, &TestRunner::onFinished);
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, &TestRunner::onFinished);
|
|
||||||
|
|
||||||
auto progress = new TaskProgress(m_taskTree.get());
|
auto progress = new TaskProgress(m_taskTree.get());
|
||||||
progress->setDisplayName(Tr::tr("Running Tests"));
|
progress->setDisplayName(Tr::tr("Running Tests"));
|
||||||
|
@@ -225,7 +225,6 @@ void DocumentClangToolRunner::run()
|
|||||||
cleanup.dismiss();
|
cleanup.dismiss();
|
||||||
m_taskTree.reset(new TaskTree(tasks));
|
m_taskTree.reset(new TaskTree(tasks));
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, &DocumentClangToolRunner::finalize);
|
connect(m_taskTree.get(), &TaskTree::done, this, &DocumentClangToolRunner::finalize);
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, &DocumentClangToolRunner::finalize);
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -486,15 +486,10 @@ void LocatorMatcher::start()
|
|||||||
};
|
};
|
||||||
|
|
||||||
d->m_taskTree->setRecipe(root);
|
d->m_taskTree->setRecipe(root);
|
||||||
|
connect(d->m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
const auto onFinish = [this](bool success) {
|
emit done(result == DoneWith::Success);
|
||||||
return [this, success] {
|
|
||||||
emit done(success);
|
|
||||||
d->m_taskTree.release()->deleteLater();
|
d->m_taskTree.release()->deleteLater();
|
||||||
};
|
});
|
||||||
};
|
|
||||||
connect(d->m_taskTree.get(), &TaskTree::done, this, onFinish(true));
|
|
||||||
connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, onFinish(false));
|
|
||||||
d->m_taskTree->start();
|
d->m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -396,13 +396,11 @@ void Locator::refresh(const QList<ILocatorFilter *> &filters)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_taskTree.reset(new TaskTree{tasks});
|
m_taskTree.reset(new TaskTree{tasks});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
|
if (result == DoneWith::Success)
|
||||||
saveSettings();
|
saveSettings();
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
});
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [this] {
|
|
||||||
m_taskTree.release()->deleteLater();
|
|
||||||
});
|
|
||||||
auto progress = new TaskProgress(m_taskTree.get());
|
auto progress = new TaskProgress(m_taskTree.get());
|
||||||
progress->setDisplayName(Tr::tr("Updating Locator Caches"));
|
progress->setDisplayName(Tr::tr("Updating Locator Caches"));
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
|
@@ -262,12 +262,10 @@ public:
|
|||||||
};
|
};
|
||||||
m_taskTree.reset(new TaskTree(root));
|
m_taskTree.reset(new TaskTree(root));
|
||||||
|
|
||||||
const auto onEnd = [this] {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
|
||||||
m_cancelButton->setVisible(false);
|
m_cancelButton->setVisible(false);
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, onEnd);
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, onEnd);
|
|
||||||
|
|
||||||
m_cancelButton->setVisible(true);
|
m_cancelButton->setVisible(true);
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
|
@@ -128,12 +128,9 @@ TaskProgress::TaskProgress(TaskTree *taskTree)
|
|||||||
connect(d->m_taskTree, &TaskTree::progressValueChanged, this, [this](int value) {
|
connect(d->m_taskTree, &TaskTree::progressValueChanged, this, [this](int value) {
|
||||||
d->advanceProgress(value);
|
d->advanceProgress(value);
|
||||||
});
|
});
|
||||||
connect(d->m_taskTree, &TaskTree::done, this, [this] {
|
connect(d->m_taskTree, &TaskTree::done, this, [this](DoneWith result) {
|
||||||
d->m_timer.stop();
|
|
||||||
d->m_futureInterface.reportFinished();
|
|
||||||
});
|
|
||||||
connect(d->m_taskTree, &TaskTree::errorOccurred, this, [this] {
|
|
||||||
d->m_timer.stop();
|
d->m_timer.stop();
|
||||||
|
if (result != DoneWith::Success)
|
||||||
d->m_futureInterface.reportCanceled();
|
d->m_futureInterface.reportCanceled();
|
||||||
d->m_futureInterface.reportFinished();
|
d->m_futureInterface.reportFinished();
|
||||||
});
|
});
|
||||||
|
@@ -219,36 +219,33 @@ void CtfVisualizerTool::loadJson(const QString &fileName)
|
|||||||
m_traceManager->addEvent(asyncPtr->resultAt(index));
|
m_traceManager->addEvent(asyncPtr->resultAt(index));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const auto onDone = [this] {
|
const auto onDone = [this](DoneWith result) {
|
||||||
|
if (result == DoneWith::Success) {
|
||||||
m_traceManager->updateStatistics();
|
m_traceManager->updateStatistics();
|
||||||
if (m_traceManager->isEmpty()) {
|
if (m_traceManager->isEmpty()) {
|
||||||
QMessageBox::warning(Core::ICore::dialogParent(),
|
QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"),
|
||||||
Tr::tr("CTF Visualizer"),
|
|
||||||
Tr::tr("The file does not contain any trace data."));
|
Tr::tr("The file does not contain any trace data."));
|
||||||
} else if (!m_traceManager->errorString().isEmpty()) {
|
} else if (!m_traceManager->errorString().isEmpty()) {
|
||||||
QMessageBox::warning(Core::ICore::dialogParent(),
|
QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"),
|
||||||
Tr::tr("CTF Visualizer"),
|
|
||||||
m_traceManager->errorString());
|
m_traceManager->errorString());
|
||||||
} else {
|
} else {
|
||||||
m_traceManager->finalize();
|
m_traceManager->finalize();
|
||||||
m_perspective.select();
|
m_perspective.select();
|
||||||
zoomControl()->setTrace(m_traceManager->traceBegin(), m_traceManager->traceEnd() + m_traceManager->traceDuration() / 20);
|
const auto end = m_traceManager->traceEnd() + m_traceManager->traceDuration() / 20;
|
||||||
zoomControl()->setRange(m_traceManager->traceBegin(), m_traceManager->traceEnd() + m_traceManager->traceDuration() / 20);
|
zoomControl()->setTrace(m_traceManager->traceBegin(), end);
|
||||||
|
zoomControl()->setRange(m_traceManager->traceBegin(), end);
|
||||||
}
|
}
|
||||||
setAvailableThreads(m_traceManager->getSortedThreads());
|
setAvailableThreads(m_traceManager->getSortedThreads());
|
||||||
m_loader.release()->deleteLater();
|
} else {
|
||||||
};
|
QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("CTF Visualizer"),
|
||||||
const auto onError = [this] {
|
|
||||||
QMessageBox::warning(Core::ICore::dialogParent(),
|
|
||||||
Tr::tr("CTF Visualizer"),
|
|
||||||
Tr::tr("Cannot read the CTF file."));
|
Tr::tr("Cannot read the CTF file."));
|
||||||
|
}
|
||||||
m_loader.release()->deleteLater();
|
m_loader.release()->deleteLater();
|
||||||
};
|
};
|
||||||
|
|
||||||
const Group recipe { AsyncTask<json>(onSetup) };
|
const Group recipe { AsyncTask<json>(onSetup) };
|
||||||
m_loader.reset(new TaskTree(recipe));
|
m_loader.reset(new TaskTree(recipe));
|
||||||
connect(m_loader.get(), &TaskTree::done, this, onDone);
|
connect(m_loader.get(), &TaskTree::done, this, onDone);
|
||||||
connect(m_loader.get(), &TaskTree::errorOccurred, this, onError);
|
|
||||||
auto progress = new TaskProgress(m_loader.get());
|
auto progress = new TaskProgress(m_loader.get());
|
||||||
progress->setDisplayName(Tr::tr("Loading CTF File"));
|
progress->setDisplayName(Tr::tr("Loading CTF File"));
|
||||||
m_loader->start();
|
m_loader->start();
|
||||||
|
@@ -173,7 +173,7 @@ int AttachCoreDialog::exec()
|
|||||||
connect(d->buttonBox, &QDialogButtonBox::accepted, this, &AttachCoreDialog::accepted);
|
connect(d->buttonBox, &QDialogButtonBox::accepted, this, &AttachCoreDialog::accepted);
|
||||||
changed();
|
changed();
|
||||||
|
|
||||||
connect(&d->taskTree, &TaskTree::done, this, [&]() {
|
connect(&d->taskTree, &TaskTree::done, this, [this] {
|
||||||
setEnabled(true);
|
setEnabled(true);
|
||||||
d->progressIndicator->setVisible(false);
|
d->progressIndicator->setVisible(false);
|
||||||
d->progressLabel->setVisible(false);
|
d->progressLabel->setVisible(false);
|
||||||
|
@@ -110,20 +110,16 @@ void DiffEditorController::requestReload()
|
|||||||
{
|
{
|
||||||
m_document->beginReload();
|
m_document->beginReload();
|
||||||
m_taskTree.reset(new TaskTree(m_reloadRecipe));
|
m_taskTree.reset(new TaskTree(m_reloadRecipe));
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, [this] { reloadFinished(true); });
|
connect(m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [this] { reloadFinished(false); });
|
if (m_taskTree)
|
||||||
|
m_taskTree.release()->deleteLater();
|
||||||
|
m_document->endReload(result == DoneWith::Success);
|
||||||
|
});
|
||||||
auto progress = new TaskProgress(m_taskTree.get());
|
auto progress = new TaskProgress(m_taskTree.get());
|
||||||
progress->setDisplayName(m_displayName);
|
progress->setDisplayName(m_displayName);
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiffEditorController::reloadFinished(bool success)
|
|
||||||
{
|
|
||||||
if (m_taskTree)
|
|
||||||
m_taskTree.release()->deleteLater();
|
|
||||||
m_document->endReload(success);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiffEditorController::addExtraActions(QMenu *menu, int fileIndex, int chunkIndex,
|
void DiffEditorController::addExtraActions(QMenu *menu, int fileIndex, int chunkIndex,
|
||||||
const ChunkSelection &selection)
|
const ChunkSelection &selection)
|
||||||
{
|
{
|
||||||
|
@@ -66,7 +66,6 @@ protected:
|
|||||||
void forceContextLineCount(int lines);
|
void forceContextLineCount(int lines);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void reloadFinished(bool success);
|
|
||||||
friend class Internal::DiffEditorWidgetController;
|
friend class Internal::DiffEditorWidgetController;
|
||||||
virtual void addExtraActions(QMenu *menu, int fileIndex, int chunkIndex,
|
virtual void addExtraActions(QMenu *menu, int fileIndex, int chunkIndex,
|
||||||
const ChunkSelection &selection);
|
const ChunkSelection &selection);
|
||||||
|
@@ -682,7 +682,8 @@ void BuildManager::startBuildQueue()
|
|||||||
topLevel.append(Group(targetTasks));
|
topLevel.append(Group(targetTasks));
|
||||||
|
|
||||||
d->m_taskTree.reset(new TaskTree(Group{topLevel}));
|
d->m_taskTree.reset(new TaskTree(Group{topLevel}));
|
||||||
const auto endHandler = [](bool success) {
|
const auto onDone = [](DoneWith result) {
|
||||||
|
const bool success = result == DoneWith::Success;
|
||||||
d->m_taskTree.release()->deleteLater();
|
d->m_taskTree.release()->deleteLater();
|
||||||
|
|
||||||
if (!success && d->m_progressFutureInterface)
|
if (!success && d->m_progressFutureInterface)
|
||||||
@@ -703,9 +704,7 @@ void BuildManager::startBuildQueue()
|
|||||||
startBuildQueue();
|
startBuildQueue();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
connect(d->m_taskTree.get(), &TaskTree::done, instance(), [endHandler] { endHandler(true); });
|
connect(d->m_taskTree.get(), &TaskTree::done, instance(), onDone);
|
||||||
connect(d->m_taskTree.get(), &TaskTree::errorOccurred, instance(),
|
|
||||||
[endHandler] { endHandler(false); });
|
|
||||||
|
|
||||||
// Progress Reporting
|
// Progress Reporting
|
||||||
d->m_progressFutureInterface = new QFutureInterface<void>;
|
d->m_progressFutureInterface = new QFutureInterface<void>;
|
||||||
|
@@ -154,12 +154,10 @@ void ExtraCompiler::compileContent(const QByteArray &content)
|
|||||||
|
|
||||||
void ExtraCompiler::compileImpl(const ContentProvider &provider)
|
void ExtraCompiler::compileImpl(const ContentProvider &provider)
|
||||||
{
|
{
|
||||||
const auto finalize = [=] {
|
|
||||||
d->m_taskTree.release()->deleteLater();
|
|
||||||
};
|
|
||||||
d->m_taskTree.reset(new TaskTree({taskItemImpl(provider)}));
|
d->m_taskTree.reset(new TaskTree({taskItemImpl(provider)}));
|
||||||
connect(d->m_taskTree.get(), &TaskTree::done, this, finalize);
|
connect(d->m_taskTree.get(), &TaskTree::done, this, [this] {
|
||||||
connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, finalize);
|
d->m_taskTree.release()->deleteLater();
|
||||||
|
});
|
||||||
d->m_taskTree->start();
|
d->m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1053,12 +1053,10 @@ void RunControlPrivate::startTaskTree()
|
|||||||
|
|
||||||
m_taskTree.reset(new TaskTree(*m_runRecipe));
|
m_taskTree.reset(new TaskTree(*m_runRecipe));
|
||||||
connect(m_taskTree.get(), &TaskTree::started, q, &RunControl::started);
|
connect(m_taskTree.get(), &TaskTree::started, q, &RunControl::started);
|
||||||
const auto finalize = [this] {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
checkAutoDeleteAndEmitStopped();
|
checkAutoDeleteAndEmitStopped();
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, finalize);
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, finalize);
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -300,12 +300,10 @@ void QnxDeployQtLibrariesDialogPrivate::start()
|
|||||||
m_deployProgress->setRange(0, m_deployableFiles.count());
|
m_deployProgress->setRange(0, m_deployableFiles.count());
|
||||||
|
|
||||||
m_taskTree.reset(new TaskTree(deployRecipe()));
|
m_taskTree.reset(new TaskTree(deployRecipe()));
|
||||||
const auto endHandler = [this] {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this] {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
handleUploadFinished();
|
handleUploadFinished();
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, endHandler);
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, endHandler);
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -122,10 +122,6 @@ void UpdateInfoPlugin::startCheckForUpdates()
|
|||||||
process.setCommand({d->m_maintenanceTool, args});
|
process.setCommand({d->m_maintenanceTool, args});
|
||||||
process.setLowPriority();
|
process.setLowPriority();
|
||||||
};
|
};
|
||||||
const auto doCleanup = [this] {
|
|
||||||
d->m_taskTree.release()->deleteLater();
|
|
||||||
checkForUpdatesStopped();
|
|
||||||
};
|
|
||||||
|
|
||||||
const auto onUpdateSetup = [doSetup](Process &process) {
|
const auto onUpdateSetup = [doSetup](Process &process) {
|
||||||
doSetup(process, {"ch", "-g", "*=false,ifw.package.*=true"});
|
doSetup(process, {"ch", "-g", "*=false,ifw.package.*=true"});
|
||||||
@@ -146,11 +142,12 @@ void UpdateInfoPlugin::startCheckForUpdates()
|
|||||||
}
|
}
|
||||||
|
|
||||||
d->m_taskTree.reset(new TaskTree(Group{tasks}));
|
d->m_taskTree.reset(new TaskTree(Group{tasks}));
|
||||||
connect(d->m_taskTree.get(), &TaskTree::done, this, [this, doCleanup] {
|
connect(d->m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
|
if (result == DoneWith::Success)
|
||||||
checkForUpdatesFinished();
|
checkForUpdatesFinished();
|
||||||
doCleanup();
|
d->m_taskTree.release()->deleteLater();
|
||||||
|
checkForUpdatesStopped();
|
||||||
});
|
});
|
||||||
connect(d->m_taskTree.get(), &TaskTree::errorOccurred, this, doCleanup);
|
|
||||||
d->m_progress = new TaskProgress(d->m_taskTree.get());
|
d->m_progress = new TaskProgress(d->m_taskTree.get());
|
||||||
d->m_progress->setHalfLifeTimePerTask(30000); // 30 seconds
|
d->m_progress->setHalfLifeTimePerTask(30000); // 30 seconds
|
||||||
d->m_progress->setDisplayName(Tr::tr("Checking for Updates"));
|
d->m_progress->setDisplayName(Tr::tr("Checking for Updates"));
|
||||||
|
@@ -213,12 +213,10 @@ bool ValgrindProcessPrivate::run()
|
|||||||
{
|
{
|
||||||
m_taskTree.reset(new TaskTree);
|
m_taskTree.reset(new TaskTree);
|
||||||
m_taskTree->setRecipe(runRecipe());
|
m_taskTree->setRecipe(runRecipe());
|
||||||
const auto finalize = [this](bool success) {
|
connect(m_taskTree.get(), &TaskTree::done, this, [this](DoneWith result) {
|
||||||
m_taskTree.release()->deleteLater();
|
m_taskTree.release()->deleteLater();
|
||||||
emit q->done(success);
|
emit q->done(result == DoneWith::Success);
|
||||||
};
|
});
|
||||||
connect(m_taskTree.get(), &TaskTree::done, this, [finalize] { finalize(true); });
|
|
||||||
connect(m_taskTree.get(), &TaskTree::errorOccurred, this, [finalize] { finalize(false); });
|
|
||||||
m_taskTree->start();
|
m_taskTree->start();
|
||||||
return bool(m_taskTree);
|
return bool(m_taskTree);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user