diff options
Diffstat (limited to 'src/interfaceframework/qifpendingreply.h')
| -rw-r--r-- | src/interfaceframework/qifpendingreply.h | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/src/interfaceframework/qifpendingreply.h b/src/interfaceframework/qifpendingreply.h index 7149dd5e..73ee362f 100644 --- a/src/interfaceframework/qifpendingreply.h +++ b/src/interfaceframework/qifpendingreply.h @@ -114,17 +114,15 @@ public: else if (failed) failed(); } else { - QSharedPointer<QIfPendingReplyWatcher> w = m_watcher; + QWeakPointer<QIfPendingReplyWatcher> w = m_watcher; if (success) { QObject::connect(watcher(), &QIfPendingReplyWatcher::replySuccess, watcher(), [success, w]() { - success(w->value().value<T>()); - }); - } - if (failed) { - QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), [failed]() { - failed(); + if (w) + success(w.toStrongRef()->value().value<T>()); }); } + if (failed) + QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), failed); } } @@ -163,17 +161,15 @@ public: else if (failed) failed(); } else { - QSharedPointer<QIfPendingReplyWatcher> w = m_watcher; + QWeakPointer<QIfPendingReplyWatcher> w = m_watcher; if (success) { QObject::connect(watcher(), &QIfPendingReplyWatcher::replySuccess, watcher(), [success, w]() { - success(w->value()); - }); - } - if (failed) { - QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), [failed]() { - failed(); + if (w) + success(w.toStrongRef()->value()); }); } + if (failed) + QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), failed); } } @@ -208,17 +204,10 @@ public: else if (failed) failed(); } else { - QSharedPointer<QIfPendingReplyWatcher> w = m_watcher; - if (success) { - QObject::connect(watcher(), &QIfPendingReplyWatcher::replySuccess, watcher(), [success, w]() { - success(); - }); - } - if (failed) { - QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), [failed]() { - failed(); - }); - } + if (success) + QObject::connect(watcher(), &QIfPendingReplyWatcher::replySuccess, watcher(), success); + if (failed) + QObject::connect(watcher(), &QIfPendingReplyWatcher::replyFailed, watcher(), failed); } } |
