aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvmemetaobject_p.h
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-07-18 10:16:12 +1000
committerQt by Nokia <qt-info@nokia.com>2012-07-20 05:35:13 +0200
commitfa3dcc0efb2696612bf9db54a7ed4e26a2cf4765 (patch)
tree1a571292334edd0ea10fda559b8c84862a51b58b /src/qml/qml/qqmlvmemetaobject_p.h
parent9018c236c73884ea706ac1d04a306467454e6243 (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.h10
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;
};