From 30fb4de15cfb4586bba0f7f379011e46298941f4 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Sun, 5 Dec 2021 15:39:39 +0100 Subject: FutureUtils: chain: Use future interface without shared_ptr Didn't work before because the lambdas weren't mutable and so the QFutureInterface was always const. --- src/base/QXmppFutureUtils_p.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/base') diff --git a/src/base/QXmppFutureUtils_p.h b/src/base/QXmppFutureUtils_p.h index 801ae285..c4b00e13 100644 --- a/src/base/QXmppFutureUtils_p.h +++ b/src/base/QXmppFutureUtils_p.h @@ -106,16 +106,16 @@ void await(const QFuture &future, QObject *context, Handler handler) template auto chain(QFuture &&source, QObject *context, Converter task) -> QFuture { - auto resultInterface = std::make_shared>(QFutureInterfaceBase::Started); + QFutureInterface resultInterface(QFutureInterfaceBase::Started); auto *watcher = new QFutureWatcher(context); - QObject::connect(watcher, &QFutureWatcherBase::finished, context, [=]() { - resultInterface->reportResult(task(watcher->result())); - resultInterface->reportFinished(); + QObject::connect(watcher, &QFutureWatcherBase::finished, context, [=]() mutable { + resultInterface.reportResult(task(watcher->result())); + resultInterface.reportFinished(); watcher->deleteLater(); }); watcher->setFuture(source); - return resultInterface->future(); + return resultInterface.future(); } template -- cgit v1.2.3