diff options
Diffstat (limited to 'src/declarative/qml/qmlengine.cpp')
-rw-r--r-- | src/declarative/qml/qmlengine.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp index 988962b..0e9b7c4 100644 --- a/src/declarative/qml/qmlengine.cpp +++ b/src/declarative/qml/qmlengine.cpp @@ -549,15 +549,7 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre return rv; } -QmlDeclarativeData::QmlDeclarativeData(QmlContext *ctxt) -: context(ctxt), bindings(0), nextContextObject(0), prevContextObject(0), - bindingBitsSize(0), bindingBits(0), outerContext(0), lineNumber(0), - columnNumber(0), deferredComponent(0), deferredIdx(0), attachedProperties(0), - propertyCache(0) -{ -} - -void QmlDeclarativeData::destroyed(QObject * /*object*/) +void QmlDeclarativeData::destroyed(QObject *object) { if (deferredComponent) deferredComponent->release(); @@ -584,6 +576,16 @@ void QmlDeclarativeData::destroyed(QObject * /*object*/) if (propertyCache) propertyCache->release(); + QmlGuard<QObject> *guard = guards; + while (guard) { + QmlGuard<QObject> *g = guard; + guard = guard->next; + g->o = 0; + g->prev = 0; + g->next = 0; + g->objectDestroyed(object); + } + delete this; } |