diff options
Diffstat (limited to 'src/quick/util/qquickstate_p_p.h')
-rw-r--r-- | src/quick/util/qquickstate_p_p.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/util/qquickstate_p_p.h b/src/quick/util/qquickstate_p_p.h index d75cfc32ee..3f0545df91 100644 --- a/src/quick/util/qquickstate_p_p.h +++ b/src/quick/util/qquickstate_p_p.h @@ -212,13 +212,19 @@ public: struct OperationGuard : public QQmlGuard<QQuickStateOperation> { - OperationGuard(QObject *obj, QList<OperationGuard> *l) : list(l) { + OperationGuard(QObject *obj, QList<OperationGuard> *l) : QQmlGuard<QQuickStateOperation>( + OperationGuard::objectDestroyedImpl, nullptr) + ,list(l) + { setObject(static_cast<QQuickStateOperation *>(obj)); } QList<OperationGuard> *list; - void objectDestroyed(QQuickStateOperation *) override { + + private: + static void objectDestroyedImpl(QQmlGuardImpl *guard) { + auto This = static_cast<OperationGuard *>(guard); // we assume priv will always be destroyed after objectDestroyed calls - list->removeOne(*this); + This->list->removeOne(*This); } }; QList<OperationGuard> operations; |