summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2017-05-18 10:19:32 +0100
committerJani Heikkinen <jani.heikkinen@qt.io>2017-05-19 17:42:36 +0000
commitf39d0a0c32cc489849a0cd5c2880f6e824223485 (patch)
treeff4ecc4310710f4876407fa23f6a1234e70a991d
parent041529012f7c329d786fcb7190c28afc1477f1c2 (diff)
Don't use a static value for the value type providerv5.9.0-rc2v5.9.0-rc1v5.9.0
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 <sean.harmer@kdab.com>
-rw-r--r--src/quick3d/quick3d/qt3dquick_global.cpp9
1 files 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)