diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-07 15:28:54 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-09 14:47:13 +0200 |
commit | c4addf7d0e91cd39b636a88772ae9543f11e2c8c (patch) | |
tree | a82c384a019573365ab357767972d5344abed495 /src/qml/qml/qqmlvmemetaobject.cpp | |
parent | e5383a5d5dd02afdbe94b380394fd88d8320e35a (diff) |
Pass QMetaType by value rather than by ID in more places
This saves us some ping-pong between the IDs and the QMetaTypes, and
avoids possible ambiguities if multiple metatypes are registered for the
same C++ type.
Change-Id: I81cec94a9cd05d69927dc884f65574f0ab2ddc22
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index e7248b038a..f7c9fbbbfb 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -250,7 +250,7 @@ void QQmlVMEMetaObjectEndpoint::tryConnect() if (pd && valueTypeIndex != -1 && !QQmlMetaType::valueType(pd->propType())) { // deep alias QQmlEnginePrivate *enginePriv = QQmlEnginePrivate::get(metaObject->compilationUnit->engine->qmlEngine()); - auto const *newPropertyCache = enginePriv->propertyCacheForType(pd->propType().id()); + auto const *newPropertyCache = enginePriv->propertyCacheForType(pd->propType()); void *argv[1] = { &target }; QMetaObject::metacall(target, QMetaObject::ReadProperty, coreIndex, argv); Q_ASSERT(newPropertyCache); @@ -708,7 +708,8 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * ? nullptr : QQmlEnginePrivate::get(ctxt->engine()); - const int fallbackMetaType = QQmlPropertyCacheCreatorBase::metaTypeForPropertyType(t).id(); + const QMetaType fallbackMetaType + = QQmlPropertyCacheCreatorBase::metaTypeForPropertyType(t); if (c == QMetaObject::ReadProperty) { switch (t) { @@ -750,12 +751,13 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * case QV4::CompiledData::BuiltinType::Vector4D: case QV4::CompiledData::BuiltinType::Matrix4x4: case QV4::CompiledData::BuiltinType::Quaternion: - Q_ASSERT(fallbackMetaType != QMetaType::UnknownType); + Q_ASSERT(fallbackMetaType.isValid()); if (QV4::MemberData *md = propertyAndMethodStorageAsMemberData()) { QVariant propertyAsVariant; if (const QV4::VariantObject *v = (md->data() + id)->as<QV4::VariantObject>()) propertyAsVariant = v->d()->data(); - QQml_valueTypeProvider()->readValueType(propertyAsVariant, a[0], fallbackMetaType); + QQml_valueTypeProvider()->readValueType( + fallbackMetaType, propertyAsVariant, a[0]); } break; case QV4::CompiledData::BuiltinType::Var: @@ -855,7 +857,7 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * case QV4::CompiledData::BuiltinType::Vector4D: case QV4::CompiledData::BuiltinType::Matrix4x4: case QV4::CompiledData::BuiltinType::Quaternion: - Q_ASSERT(fallbackMetaType != QMetaType::UnknownType); + Q_ASSERT(fallbackMetaType.isValid()); if (QV4::MemberData *md = propertyAndMethodStorageAsMemberData()) { const QV4::VariantObject *v = (md->data() + id)->as<QV4::VariantObject>(); if (!v) { |