diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2016-09-07 13:31:14 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2016-09-27 08:37:39 +0000 |
commit | c08423ac01be53a40226b30e62d2d50d1fca9fd5 (patch) | |
tree | bf5803dcfd215b3f53f18e0479971cb2a4d3b5ad /src/qml/qml | |
parent | 480037f2988f5b3010bd6a444cda8e28a24571fd (diff) |
QML: Replace QPointer with a QQmlQPointer (which is trivial)
One of the steps needed to make QV4::Heap::structs trivial.
Change-Id: Ic4d73f15035af21c8a682aaad1ee68cdd91f8e7d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlcomponent.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontextwrapper.cpp | 3 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontextwrapper_p.h | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmllistwrapper.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmllistwrapper_p.h | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmltypewrapper.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmltypewrapper_p.h | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 5 |
8 files changed, 15 insertions, 7 deletions
diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp index 5a440bdaf4..337b15d35c 100644 --- a/src/qml/qml/qqmlcomponent.cpp +++ b/src/qml/qml/qqmlcomponent.cpp @@ -1059,8 +1059,9 @@ namespace Heap { struct QmlIncubatorObject : Object { QmlIncubatorObject(QQmlIncubator::IncubationMode = QQmlIncubator::Asynchronous); + ~QmlIncubatorObject() { parent.destroy(); } QScopedPointer<QQmlComponentIncubator> incubator; - QPointer<QObject> parent; + QQmlQPointer<QObject> parent; QV4::Value valuemap; QV4::Value statusChanged; Pointer<Heap::QmlContext> qmlContext; @@ -1488,6 +1489,7 @@ QV4::Heap::QmlIncubatorObject::QmlIncubatorObject(QQmlIncubator::IncubationMode , statusChanged(QV4::Primitive::undefinedValue()) , qmlContext(0) { + parent.init(); incubator.reset(new QQmlComponentIncubator(this, m)); } diff --git a/src/qml/qml/qqmlcontextwrapper.cpp b/src/qml/qml/qqmlcontextwrapper.cpp index 2d0ebad764..13d708bc17 100644 --- a/src/qml/qml/qqmlcontextwrapper.cpp +++ b/src/qml/qml/qqmlcontextwrapper.cpp @@ -66,14 +66,15 @@ Heap::QmlContextWrapper::QmlContextWrapper(QQmlContextData *context, QObject *sc , ownsContext(ownsContext) , isNullWrapper(false) , context(context) - , scopeObject(scopeObject) { + this->scopeObject.init(scopeObject); } Heap::QmlContextWrapper::~QmlContextWrapper() { if (context && ownsContext) context->destroy(); + scopeObject.destroy(); } ReturnedValue QmlContextWrapper::qmlScope(ExecutionEngine *v4, QQmlContextData *ctxt, QObject *scope) diff --git a/src/qml/qml/qqmlcontextwrapper_p.h b/src/qml/qml/qqmlcontextwrapper_p.h index ca7fcf1d75..2b8c16f274 100644 --- a/src/qml/qml/qqmlcontextwrapper_p.h +++ b/src/qml/qml/qqmlcontextwrapper_p.h @@ -71,7 +71,7 @@ struct QmlContextWrapper : Object { bool isNullWrapper; QQmlGuardedContextData context; - QPointer<QObject> scopeObject; + QQmlQPointer<QObject> scopeObject; }; } diff --git a/src/qml/qml/qqmllistwrapper.cpp b/src/qml/qml/qqmllistwrapper.cpp index 5c35866274..425a720867 100644 --- a/src/qml/qml/qqmllistwrapper.cpp +++ b/src/qml/qml/qqmllistwrapper.cpp @@ -54,6 +54,7 @@ DEFINE_OBJECT_VTABLE(QmlListWrapper); Heap::QmlListWrapper::QmlListWrapper() { + object.init(); QV4::Scope scope(internalClass->engine); QV4::ScopedObject o(scope, this); o->setArrayType(Heap::ArrayData::Custom); @@ -61,6 +62,7 @@ Heap::QmlListWrapper::QmlListWrapper() Heap::QmlListWrapper::~QmlListWrapper() { + object.destroy(); } ReturnedValue QmlListWrapper::create(ExecutionEngine *engine, QObject *object, int propId, int propType) diff --git a/src/qml/qml/qqmllistwrapper_p.h b/src/qml/qml/qqmllistwrapper_p.h index 26e1e5faaf..1107b957c9 100644 --- a/src/qml/qml/qqmllistwrapper_p.h +++ b/src/qml/qml/qqmllistwrapper_p.h @@ -68,7 +68,7 @@ namespace Heap { struct QmlListWrapper : Object { QmlListWrapper(); ~QmlListWrapper(); - QPointer<QObject> object; + QQmlQPointer<QObject> object; QQmlListProperty<QObject> property; int propertyType; }; diff --git a/src/qml/qml/qqmltypewrapper.cpp b/src/qml/qml/qqmltypewrapper.cpp index 7892555f08..28c2588117 100644 --- a/src/qml/qml/qqmltypewrapper.cpp +++ b/src/qml/qml/qqmltypewrapper.cpp @@ -58,12 +58,14 @@ DEFINE_OBJECT_VTABLE(QmlTypeWrapper); Heap::QmlTypeWrapper::QmlTypeWrapper() : mode(IncludeEnums) { + object.init(); } Heap::QmlTypeWrapper::~QmlTypeWrapper() { if (typeNamespace) typeNamespace->release(); + object.destroy(); } bool QmlTypeWrapper::isSingleton() const diff --git a/src/qml/qml/qqmltypewrapper_p.h b/src/qml/qml/qqmltypewrapper_p.h index 8216526cb5..7c5105b184 100644 --- a/src/qml/qml/qqmltypewrapper_p.h +++ b/src/qml/qml/qqmltypewrapper_p.h @@ -74,7 +74,7 @@ struct QmlTypeWrapper : Object { QmlTypeWrapper(); ~QmlTypeWrapper(); TypeNameMode mode; - QPointer<QObject> object; + QQmlQPointer<QObject> object; QQmlType *type; QQmlTypeNameCache *typeNamespace; diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 2566ab06b5..6b308374e6 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -63,8 +63,9 @@ namespace Heap { struct QQmlValueTypeReference : QQmlValueTypeWrapper { - QQmlValueTypeReference() {} - QPointer<QObject> object; + QQmlValueTypeReference() { object.init(); } + ~QQmlValueTypeReference() { object.destroy(); } + QQmlQPointer<QObject> object; int property; }; |