forked from qt-creator/qt-creator
TaskTree: Add Task c'tor taking one handler for done and error
The overloaded c'tor takes one done handler with an additional "bool success" argument. Task-number: QTCREATORBUG-29834 Change-Id: Id579d055721a2a07a5a9f0900aa4a73655f21610 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -113,24 +113,22 @@ DiffFilesController::DiffFilesController(IDocument *document)
|
||||
const auto setupTree = [this, storage](TaskTree &taskTree) {
|
||||
QList<std::optional<FileData>> *outputList = storage.activeStorage();
|
||||
|
||||
const auto setupDiff = [this](Async<FileData> &async, const ReloadInput &reloadInput) {
|
||||
async.setConcurrentCallData(
|
||||
DiffFile(ignoreWhitespace(), contextLineCount()), reloadInput);
|
||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
||||
};
|
||||
const auto onDiffDone = [outputList](const Async<FileData> &async, int i) {
|
||||
if (async.isResultAvailable())
|
||||
(*outputList)[i] = async.result();
|
||||
};
|
||||
|
||||
const QList<ReloadInput> inputList = reloadInputList();
|
||||
outputList->resize(inputList.size());
|
||||
|
||||
using namespace std::placeholders;
|
||||
QList<GroupItem> tasks {parallel, finishAllAndDone};
|
||||
QList<GroupItem> tasks { parallel, finishAllAndDone };
|
||||
for (int i = 0; i < inputList.size(); ++i) {
|
||||
tasks.append(AsyncTask<FileData>(std::bind(setupDiff, _1, inputList.at(i)),
|
||||
std::bind(onDiffDone, _1, i)));
|
||||
const auto setupDiff = [this, reloadInput = inputList.at(i)](Async<FileData> &async) {
|
||||
async.setConcurrentCallData(
|
||||
DiffFile(ignoreWhitespace(), contextLineCount()), reloadInput);
|
||||
async.setFutureSynchronizer(ExtensionSystem::PluginManager::futureSynchronizer());
|
||||
};
|
||||
|
||||
const auto onDiffDone = [outputList, i](const Async<FileData> &async) {
|
||||
if (async.isResultAvailable())
|
||||
(*outputList)[i] = async.result();
|
||||
};
|
||||
tasks.append(AsyncTask<FileData>(setupDiff, onDiffDone));
|
||||
}
|
||||
taskTree.setRecipe(tasks);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user