diff options
author | Matthew Vogt <matthew.vogt@nokia.com> | 2012-07-18 10:16:12 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-20 05:35:13 +0200 |
commit | fa3dcc0efb2696612bf9db54a7ed4e26a2cf4765 (patch) | |
tree | 1a571292334edd0ea10fda559b8c84862a51b58b /src/qml/qml/qqmlvmemetaobject_p.h | |
parent | 9018c236c73884ea706ac1d04a306467454e6243 (diff) |
Update var property to null on object deletion
When a var property contains a pointer to a QObject-derived instance,
ensure that object deletion causes the property to be updated.
Task-number: QTBUG-26542
Change-Id: I67a59ffd7f09063328d45dc84889add55a5428e4
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject_p.h')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject_p.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject_p.h b/src/qml/qml/qqmlvmemetaobject_p.h index 7a01b70b06..5751989b0c 100644 --- a/src/qml/qml/qqmlvmemetaobject_p.h +++ b/src/qml/qml/qqmlvmemetaobject_p.h @@ -141,13 +141,15 @@ class QQmlVMEMetaObject; class QQmlVMEVariantQObjectPtr : public QQmlGuard<QObject> { public: - inline QQmlVMEVariantQObjectPtr(); + inline QQmlVMEVariantQObjectPtr(bool isVar); inline ~QQmlVMEVariantQObjectPtr(); + inline void objectDestroyed(QObject *); inline void setGuardedValue(QObject *obj, QQmlVMEMetaObject *target, int index); QQmlVMEMetaObject *m_target; - int m_index; + unsigned m_isVar : 1; + int m_index : 31; }; class QV8QObjectWrapper; @@ -238,6 +240,10 @@ public: void activate(QObject *, int, void **); + QList<QQmlVMEVariantQObjectPtr *> varObjectGuards; + + QQmlVMEVariantQObjectPtr *getQObjectGuardForProperty(int) const; + friend class QV8GCCallback; friend class QV8QObjectWrapper; }; |