From 297eb535d9b237a1db32c2bde573967fd4485aa5 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 17 Sep 2015 13:31:32 +0200 Subject: Get rid of the aConnected bit array in the vmemo We can track the state just as easily by simply checking if the endpoints metaobject is already set. Change-Id: I5cea909b2525bf37d404f6d54ead2bdf9538cff4 Reviewed-by: Simon Hausmann --- src/qml/qml/qqmlvmemetaobject.cpp | 26 ++++++++++++-------------- src/qml/qml/qqmlvmemetaobject_p.h | 1 - 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src/qml/qml') diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index 3a89e4c43d..64f5bfefd7 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -168,7 +168,6 @@ QQmlVMEMetaObject::QQmlVMEMetaObject(QObject *obj, op->metaObject = this; QQmlData::get(obj)->hasVMEMetaObject = true; - aConnected.resize(metaData->aliasCount); int list_type = qMetaTypeId >(); int qobject_type = qMetaTypeId(); int variant_type = qMetaTypeId(); @@ -1124,22 +1123,21 @@ bool QQmlVMEMetaObject::aliasTarget(int index, QObject **target, int *coreIndex, void QQmlVMEMetaObject::connectAlias(int aliasId) { - if (!aConnected.testBit(aliasId)) { + if (!aliasEndpoints) + aliasEndpoints = new QQmlVMEMetaObjectEndpoint[metaData->aliasCount]; - if (!aliasEndpoints) - aliasEndpoints = new QQmlVMEMetaObjectEndpoint[metaData->aliasCount]; + QQmlVMEMetaData::AliasData *d = metaData->aliasData() + aliasId; - aConnected.setBit(aliasId); - - QQmlVMEMetaData::AliasData *d = metaData->aliasData() + aliasId; - - QQmlVMEMetaObjectEndpoint *endpoint = aliasEndpoints + aliasId; - endpoint->metaObject = this; - - endpoint->connect(&ctxt->idValues[d->contextIdx].bindings); - - endpoint->tryConnect(); + QQmlVMEMetaObjectEndpoint *endpoint = aliasEndpoints + aliasId; + if (endpoint->metaObject.data()) { + // already connected + Q_ASSERT(endpoint->metaObject.data() == this); + return; } + + endpoint->metaObject = this; + endpoint->connect(&ctxt->idValues[d->contextIdx].bindings); + endpoint->tryConnect(); } void QQmlVMEMetaObject::connectAliasSignal(int index, bool indexInSignalRange) diff --git a/src/qml/qml/qqmlvmemetaobject_p.h b/src/qml/qml/qqmlvmemetaobject_p.h index 69514d988b..a2dbd793ee 100644 --- a/src/qml/qml/qqmlvmemetaobject_p.h +++ b/src/qml/qml/qqmlvmemetaobject_p.h @@ -233,7 +233,6 @@ public: void mark(QV4::ExecutionEngine *e); void connectAlias(int aliasId); - QBitArray aConnected; QQmlPropertyValueInterceptor *interceptors; -- cgit v1.2.3