diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-09-30 01:07:07 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-10-05 02:39:02 (GMT) |
commit | 49527e854a9edb0a92e64264d6efac6be46cf0ed (patch) | |
tree | 2bcc8dad3c1e6c0a239eac5e3188c2ec8eada602 /src/declarative/qml/qmlvme.cpp | |
parent | c4190288ca68eca9b84ccab67d860517a6a8e7c5 (diff) | |
download | Qt-49527e854a9edb0a92e64264d6efac6be46cf0ed.zip Qt-49527e854a9edb0a92e64264d6efac6be46cf0ed.tar.gz Qt-49527e854a9edb0a92e64264d6efac6be46cf0ed.tar.bz2 |
Create a property cache for synthesized metaobjects
Diffstat (limited to 'src/declarative/qml/qmlvme.cpp')
-rw-r--r-- | src/declarative/qml/qmlvme.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp index 44b17e6..a5d2732 100644 --- a/src/declarative/qml/qmlvme.cpp +++ b/src/declarative/qml/qmlvme.cpp @@ -143,6 +143,7 @@ QObject *QmlVME::run(QStack<QObject *> &stack, QmlContext *ctxt, const QList<QmlCompiledData::CustomTypeData> &customTypeData = comp->customTypeData; const QList<int> &intData = comp->intData; const QList<float> &floatData = comp->floatData; + const QList<QmlPropertyCache *> &propertyCaches = comp->propertyCaches; QmlEnginePrivate::SimpleList<QmlAbstractBinding> bindValues; @@ -259,9 +260,15 @@ QObject *QmlVME::run(QStack<QObject *> &stack, QmlContext *ctxt, const QByteArray &metadata = datas.at(instr.storeMeta.data); QMetaObjectBuilder::fromRelocatableData(&mo, 0, metadata); - const QmlVMEMetaData *data = (const QmlVMEMetaData *)datas.at(instr.storeMeta.aliasData).constData(); + const QmlVMEMetaData *data = + (const QmlVMEMetaData *)datas.at(instr.storeMeta.aliasData).constData(); (void)new QmlVMEMetaObject(target, &mo, data, comp); + + QmlDeclarativeData *ddata = QmlDeclarativeData::get(target, true); + if (ddata->propertyCache) ddata->propertyCache->release(); + ddata->propertyCache = propertyCaches.at(instr.storeMeta.propertyCache); + ddata->propertyCache->addref(); } break; |