diff options
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject_p.h | 2 | ||||
-rw-r--r-- | src/quick/designer/qqmldesignermetaobject.cpp | 19 | ||||
-rw-r--r-- | src/quick/designer/qqmldesignermetaobject_p.h | 1 |
4 files changed, 7 insertions, 19 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index 8697a291e2..6907b26cd8 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -319,8 +319,6 @@ QQmlVMEMetaObject::QQmlVMEMetaObject(QObject *obj, ctxt(QQmlData::get(obj, true)->outerContext), aliasEndpoints(0), compilationUnit(qmlCompilationUnit), compiledObject(0) { - cache->addref(); - QQmlData::get(obj)->hasVMEMetaObject = true; if (compilationUnit && qmlObjectId >= 0) { @@ -345,8 +343,6 @@ QQmlVMEMetaObject::~QQmlVMEMetaObject() delete [] aliasEndpoints; qDeleteAll(varObjectGuards); - - cache->release(); } QV4::MemberData *QQmlVMEMetaObject::propertyAndMethodStorageAsMemberData() diff --git a/src/qml/qml/qqmlvmemetaobject_p.h b/src/qml/qml/qqmlvmemetaobject_p.h index 41f454eb62..5aa141d026 100644 --- a/src/qml/qml/qqmlvmemetaobject_p.h +++ b/src/qml/qml/qqmlvmemetaobject_p.h @@ -111,7 +111,7 @@ protected: public: QObject *object; - QQmlPropertyCache *cache; + QQmlRefPointer<QQmlPropertyCache> cache; QBiPointer<QDynamicMetaObjectData, const QMetaObject> parent; QQmlPropertyValueInterceptor *interceptors; diff --git a/src/quick/designer/qqmldesignermetaobject.cpp b/src/quick/designer/qqmldesignermetaobject.cpp index 23a29d5831..5e897218c5 100644 --- a/src/quick/designer/qqmldesignermetaobject.cpp +++ b/src/quick/designer/qqmldesignermetaobject.cpp @@ -120,13 +120,7 @@ void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine) QObjectPrivate *op = QObjectPrivate::get(object); op->metaObject = this; - m_cache = QQmlEnginePrivate::get(engine)->cache(this); - - if (m_cache != cache) { - m_cache->addref(); - cache->release(); - cache = m_cache; - } + cache = QQmlEnginePrivate::get(engine)->cache(this); nodeInstanceMetaObjectList.insert(this, true); hasAssignedMetaObjectData = true; @@ -135,8 +129,7 @@ void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine) QQmlDesignerMetaObject::QQmlDesignerMetaObject(QObject *object, QQmlEngine *engine) : QQmlVMEMetaObject(object, cacheForObject(object, engine), /*qml compilation unit*/nullptr, /*qmlObjectId*/-1), m_context(engine->contextForObject(object)), - m_data(new MetaPropertyData), - m_cache(0) + m_data(new MetaPropertyData) { init(object, engine); @@ -146,8 +139,8 @@ QQmlDesignerMetaObject::QQmlDesignerMetaObject(QObject *object, QQmlEngine *engi cache->setParent(ddata->propertyCache); cache->invalidate(engine, this); ddata->propertyCache->release(); - ddata->propertyCache = m_cache; - m_cache->addref(); + ddata->propertyCache = cache; + ddata->propertyCache->addref(); } } @@ -168,9 +161,9 @@ void QQmlDesignerMetaObject::createNewDynamicProperty(const QString &name) Q_UNUSED(id); //Updating cache - QQmlPropertyCache *oldParent = m_cache->parent(); + QQmlPropertyCache *oldParent = cache->parent(); QQmlEnginePrivate::get(m_context->engine())->cache(this)->invalidate(m_context->engine(), this); - m_cache->setParent(oldParent); + cache->setParent(oldParent); QQmlProperty property(myObject(), name, m_context); Q_ASSERT(property.isValid()); diff --git a/src/quick/designer/qqmldesignermetaobject_p.h b/src/quick/designer/qqmldesignermetaobject_p.h index a5402ccbc4..01512f6af0 100644 --- a/src/quick/designer/qqmldesignermetaobject_p.h +++ b/src/quick/designer/qqmldesignermetaobject_p.h @@ -101,7 +101,6 @@ private: QQmlOpenMetaObjectType *m_type; QScopedPointer<MetaPropertyData> m_data; //QAbstractDynamicMetaObject *m_parent; - QQmlPropertyCache *m_cache; friend class QQuickDesignerSupportProperties; }; |