aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/designer
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-04-27 08:47:35 +0200
committerLiang Qi <liang.qi@qt.io>2016-04-27 08:47:35 +0200
commitda374438be8f34f746f359aa39ae6c59fd1c4854 (patch)
tree2f3e2a2b93b39dfb825339c98580f23e824fad0e /src/quick/designer
parent1be53f4e143d417d60cd1f9a292193dab59b5b20 (diff)
parent2e6f7f362e62c3285e7d395aca607502c8e8160e (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: src/quick/items/qquickimagebase.cpp src/imports/layouts/plugin.cpp Change-Id: I5f48474df4034a1347ec74795c85d369a55b6b21
Diffstat (limited to 'src/quick/designer')
-rw-r--r--src/quick/designer/qqmldesignermetaobject.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/quick/designer/qqmldesignermetaobject.cpp b/src/quick/designer/qqmldesignermetaobject.cpp
index 46808f978b..0bfa72e9d4 100644
--- a/src/quick/designer/qqmldesignermetaobject.cpp
+++ b/src/quick/designer/qqmldesignermetaobject.cpp
@@ -140,9 +140,13 @@ void QQmlDesignerMetaObject::init(QObject *object, QQmlEngine *engine)
QObjectPrivate *op = QObjectPrivate::get(object);
op->metaObject = this;
- //create cache
- cache = m_cache = QQmlEnginePrivate::get(engine)->cache(this);
- cache->addref();
+ m_cache = QQmlEnginePrivate::get(engine)->cache(this);
+
+ if (m_cache != cache) {
+ m_cache->addref();
+ cache->release();
+ cache = m_cache;
+ }
//If our parent is not a VMEMetaObject we just se the flag to false again
if (constructedMetaData(metaData))
@@ -166,17 +170,16 @@ QQmlDesignerMetaObject::QQmlDesignerMetaObject(QObject *object, QQmlEngine *engi
if (ddata && ddata->propertyCache) {
cache->setParent(ddata->propertyCache);
cache->invalidate(engine, this);
+ ddata->propertyCache->release();
ddata->propertyCache = m_cache;
+ m_cache->addref();
}
}
QQmlDesignerMetaObject::~QQmlDesignerMetaObject()
{
- if (cache->count() > 1) // qml is crashing because the property cache is not removed from the engine
- cache->release();
- else
- m_type->release();
+ m_type->release();
nodeInstanceMetaObjectList.remove(this);
}