From 4a28ae74e0cbc7d0b2ec45830fdbf8e80e8995d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Thu, 13 Nov 2014 12:22:20 +0100 Subject: Do not use QMetaType::registerType. The function is transitional from Qt4 to Qt5. It should not be called. The patch is a semi cherry-pick of: 14e247e4b94df17ed62750b4468c2ac25aabe30f a49154a75005403185e3813d441fb3e1931af2a2 1f74dde59f8ecb8be3a41973ab5d8d435815edd6 from qtdeclarative. Change-Id: I5f90a58d6fa8d1df69e149da22e17e234173dd68 Reviewed-by: Simon Hausmann --- src/declarative/qml/qdeclarativeengine.cpp | 32 ++++++++++++------------------ 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 682c8267..7f4ed88e 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -2295,21 +2295,6 @@ QString QDeclarativeEngine::offlineStoragePath() const return d->scriptEngine.offlineStoragePath; } -static void voidptr_destructor(void *v) -{ - void **ptr = (void **)v; - delete ptr; -} - -static void *voidptr_constructor(const void *v) -{ - if (!v) { - return new void*; - } else { - return new void*(*(void **)v); - } -} - QDeclarativePropertyCache *QDeclarativeEnginePrivate::createCache(const QMetaObject *mo) { Q_Q(QDeclarativeEngine); @@ -2436,10 +2421,19 @@ void QDeclarativeEnginePrivate::registerCompositeType(QDeclarativeCompiledData * QByteArray ptr = name + '*'; QByteArray lst = "QDeclarativeListProperty<" + name + '>'; - int ptr_type = QMetaType::registerType(ptr.constData(), voidptr_destructor, - voidptr_constructor); - int lst_type = QMetaType::registerType(lst.constData(), voidptr_destructor, - voidptr_constructor); + int ptr_type = QMetaType::registerNormalizedType(ptr, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper::Construct, + sizeof(QObject*), + static_cast >(QtPrivate::QMetaTypeTypeFlags::Flags), + data->root); + int lst_type = QMetaType::registerNormalizedType(lst, + QtMetaTypePrivate::QMetaTypeFunctionHelper >::Destruct, + QtMetaTypePrivate::QMetaTypeFunctionHelper >::Construct, + sizeof(QDeclarativeListProperty), + static_cast >(QtPrivate::QMetaTypeTypeFlags >::Flags), + static_cast(0)); + m_qmlLists.insert(lst_type, ptr_type); m_compositeTypes.insert(ptr_type, data); -- cgit v1.2.1