Fixed possible memory leak in BlackMisc::singleShot.

This commit is contained in:
Mathew Sutcliffe
2016-11-06 02:15:12 +00:00
committed by Klaus Basan
parent 6f5193a74f
commit 969c077182

View File

@@ -49,10 +49,10 @@ namespace BlackMisc
QSharedPointer<QTimer> timer(new QTimer, [](QObject *o) { QMetaObject::invokeMethod(o, "deleteLater"); }); QSharedPointer<QTimer> timer(new QTimer, [](QObject *o) { QMetaObject::invokeMethod(o, "deleteLater"); });
timer->setSingleShot(true); timer->setSingleShot(true);
timer->moveToThread(target->thread()); timer->moveToThread(target->thread());
QObject::connect(timer.data(), &QTimer::timeout, target, [trace = getStackTrace(), task = std::forward<F>(task), timer] QObject::connect(timer.data(), &QTimer::timeout, target, [trace = getStackTrace(), task = std::forward<F>(task), timer]() mutable
{ {
static_cast<void>(trace); static_cast<void>(trace);
static_cast<void>(timer); timer.clear();
task(); task();
}); });
QMetaObject::invokeMethod(timer.data(), "start", Q_ARG(int, msec)); QMetaObject::invokeMethod(timer.data(), "start", Q_ARG(int, msec));