From f39d0a0c32cc489849a0cd5c2880f6e824223485 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Thu, 18 May 2017 10:19:32 +0100 Subject: Don't use a static value for the value type provider Avoids the destruction of the provider at shutdown which if not previously added as a provider triggers an assertion. We use a pointer and avoid this static destruction codepath. Task-number: QTBUG-56546 Change-Id: I934ef79ce62e4adb41caf8058a065b8b0dcf42a6 Reviewed-by: Sean Harmer --- src/quick3d/quick3d/qt3dquick_global.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/quick3d/quick3d/qt3dquick_global.cpp b/src/quick3d/quick3d/qt3dquick_global.cpp index a98211991..0ce0b8194 100644 --- a/src/quick3d/quick3d/qt3dquick_global.cpp +++ b/src/quick3d/quick3d/qt3dquick_global.cpp @@ -659,10 +659,12 @@ public: #undef ASSERT_VALID_SIZE }; -static Quick3DValueTypeProvider valueTypeProvider; +Quick3DValueTypeProvider *valueTypeProvider = nullptr; static Quick3DValueTypeProvider *getValueTypeProvider() { - return &valueTypeProvider; + if (valueTypeProvider == nullptr) + valueTypeProvider = new Quick3DValueTypeProvider(); + return valueTypeProvider; } static Quick3DColorProvider *getColorProvider() @@ -708,7 +710,8 @@ void Quick3D_initialize() void Quick3D_uninitialize() { - QQml_removeValueTypeProvider(&valueTypeProvider); + delete valueTypeProvider; + valueTypeProvider = nullptr; } void Quick3D_registerType(const char *className, const char *quickName, int major, int minor) -- cgit v1.2.3