diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-05-16 10:39:57 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-05-17 12:57:40 +0200 |
commit | 30a95fa0ee4a456cc41d652bf5f6b3c1fce944fb (patch) | |
tree | 0260620b5e1dcc51066b44c8ebb81cf3650ab224 /src/qml/qml/qqmlvaluetypewrapper_p.h | |
parent | b32e17ed4fabde0d59a564ef2ed7bfb9a70de6ea (diff) | |
download | qtdeclarative-30a95fa0ee4a456cc41d652bf5f6b3c1fce944fb.tar.gz |
QtQml: Use QMetaType in QQmlValueTypeWrapper
Retrieving the QQmlValueType is expensive and there is not a single
place where we need anything but its QMetaObject. Retrieving only the
meta object, on the other hand, is cheap.
Change-Id: I3ad5574d64f1f67a4d4cf2886dc5c396e99ec91a
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper_p.h')
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper_p.h | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper_p.h b/src/qml/qml/qqmlvaluetypewrapper_p.h index 7a1fa02279..a100fc6519 100644 --- a/src/qml/qml/qqmlvaluetypewrapper_p.h +++ b/src/qml/qml/qqmlvaluetypewrapper_p.h @@ -41,11 +41,12 @@ namespace Heap { DECLARE_HEAP_OBJECT(QQmlValueTypeWrapper, ReferenceObject) { DECLARE_MARKOBJECTS(QQmlValueTypeWrapper); - void init(const void *data, QQmlValueType *valueType, const QMetaObject *metaObject, - Object *object, int property, Flags flags) + void init( + const void *data, QMetaType metaType, const QMetaObject *metaObject, + Object *object, int property, Flags flags) { ReferenceObject::init(object, property, flags); - setValueType(valueType); + setMetaType(metaType); setMetaObject(metaObject); if (data) setData(data); @@ -55,10 +56,10 @@ DECLARE_HEAP_OBJECT(QQmlValueTypeWrapper, ReferenceObject) { void destroy(); - QQmlValueType *valueType() const + QMetaType metaType() const { - Q_ASSERT(m_valueType != nullptr); - return m_valueType; + Q_ASSERT(m_metaType != nullptr); + return QMetaType(m_metaType); } void setGadgetPtr(void *gadgetPtr) { m_gadgetPtr = gadgetPtr; } @@ -77,14 +78,14 @@ DECLARE_HEAP_OBJECT(QQmlValueTypeWrapper, ReferenceObject) { private: void setMetaObject(const QMetaObject *metaObject) { m_metaObject = metaObject; } - void setValueType(QQmlValueType *valueType) + void setMetaType(QMetaType metaType) { - Q_ASSERT(valueType != nullptr); - m_valueType = valueType; + Q_ASSERT(metaType.isValid()); + m_metaType = metaType.iface(); } void *m_gadgetPtr; - QQmlValueType *m_valueType; + const QtPrivate::QMetaTypeInterface *m_metaType; const QMetaObject *m_metaObject; }; |