diff options
-rw-r--r-- | src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp | 5 | ||||
-rw-r--r-- | src/quick3d/imports/core/qt3dquick3dcoreplugin.h | 1 | ||||
-rw-r--r-- | src/quick3d/quick3d/qt3dquick_global.cpp | 7 | ||||
-rw-r--r-- | src/quick3d/quick3d/qt3dquick_global_p.h | 1 |
4 files changed, 13 insertions, 1 deletions
diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp index 6d2a78166..3ff63d9d9 100644 --- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp +++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp @@ -71,4 +71,9 @@ void Qt3DQuick3DCorePlugin::registerTypes(const char *uri) qmlRegisterExtendedUncreatableType<Qt3DCore::QNode, Qt3DCore::Quick::Quick3DNodeV9, 9>(uri, 2, 9, "Node", QStringLiteral("Node is a base class")); } +Qt3DQuick3DCorePlugin::~Qt3DQuick3DCorePlugin() +{ + Qt3DCore::Quick::Quick3D_uninitialize(); +} + QT_END_NAMESPACE diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.h b/src/quick3d/imports/core/qt3dquick3dcoreplugin.h index a9b215c4a..b0ef5947c 100644 --- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.h +++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.h @@ -57,6 +57,7 @@ class Qt3DQuick3DCorePlugin : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: Qt3DQuick3DCorePlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { initResources(); } + ~Qt3DQuick3DCorePlugin(); void registerTypes(const char *uri) Q_DECL_OVERRIDE; }; diff --git a/src/quick3d/quick3d/qt3dquick_global.cpp b/src/quick3d/quick3d/qt3dquick_global.cpp index ebf27e7ae..a98211991 100644 --- a/src/quick3d/quick3d/qt3dquick_global.cpp +++ b/src/quick3d/quick3d/qt3dquick_global.cpp @@ -659,9 +659,9 @@ public: #undef ASSERT_VALID_SIZE }; +static Quick3DValueTypeProvider valueTypeProvider; static Quick3DValueTypeProvider *getValueTypeProvider() { - static Quick3DValueTypeProvider valueTypeProvider; return &valueTypeProvider; } @@ -706,6 +706,11 @@ void Quick3D_initialize() QQmlPrivate::qmlregister(QQmlPrivate::AutoParentRegistration, &autoparent); } +void Quick3D_uninitialize() +{ + QQml_removeValueTypeProvider(&valueTypeProvider); +} + void Quick3D_registerType(const char *className, const char *quickName, int major, int minor) { QuickNodeFactory::instance()->registerType(className, quickName, major, minor); diff --git a/src/quick3d/quick3d/qt3dquick_global_p.h b/src/quick3d/quick3d/qt3dquick_global_p.h index d67209404..ffc603f91 100644 --- a/src/quick3d/quick3d/qt3dquick_global_p.h +++ b/src/quick3d/quick3d/qt3dquick_global_p.h @@ -62,6 +62,7 @@ namespace Qt3DCore { namespace Quick { QT3DQUICKSHARED_PRIVATE_EXPORT void Quick3D_initialize(); +QT3DQUICKSHARED_PRIVATE_EXPORT void Quick3D_uninitialize(); QT3DQUICKSHARED_PRIVATE_EXPORT void Quick3D_registerType(const char *className, const char *quickName, int major, int minor); template<class T, class E> void registerExtendedType(const char *className, const char *quickName, |