From f291ccc0b160c87308d0845877b3a9dd492dc712 Mon Sep 17 00:00:00 2001 From: Jing Bai Date: Tue, 4 Dec 2012 19:39:01 +0100 Subject: remove unnessary reference to QGuiApplication In QDeclarativeEngine initialization,it goes through all types, including Font in Gui. This causes a crash when using QDeclarativeEngine with QCoreApplication. Task-number: QTBUG-28375 Change-Id: Idce2a046db7e52a1c13b8c5c0315e36873f7e27d Reviewed-by: Pierre Rossi --- src/declarative/qml/qdeclarativevaluetype.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/declarative/qml') diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index 00b9a4de..9043760a 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -80,9 +80,19 @@ int qmlRegisterValueTypeEnums(const char *uri, int versionMajor, int versionMino QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory() { + static int isGuiApp = -1; + memset(valueTypes, 0, sizeof(valueTypes)); + /*FIXME: is there a better way to tell if an app is Gui or not?*/ + if (isGuiApp == -1) + isGuiApp = (int) qApp->inherits("QGuiApplication"); // ### Optimize - for (unsigned int ii = 0; ii < (QVariant::UserType - 1); ++ii) + for (unsigned int ii = 0; ii <= QVariant::LastCoreType; ++ii) valueTypes[ii] = valueType(ii); + + if (isGuiApp) { + for (unsigned int ii = QVariant::LastCoreType + 1; ii < (QVariant::UserType - 1); ++ii) + valueTypes[ii] = valueType(ii); + } } QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory() -- cgit v1.2.3