aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-11-17 12:40:53 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2016-11-17 14:11:31 +0000
commit2202d79b39ff90eed19fb8106f79d4604e47acfd (patch)
tree520589914ae527cd9a8fba92099efc4e602455e3
parentd46c60548b481ca9dce5964a98164c9948d2123b (diff)
QQuickStyle: kill the temporary QQmlEngine instance
The temporary QQmlEngine instance is not only slow and ugly, but also causes random crashes in the CI. This change replaces the temporary QQmlEngine instance with a local defaultImportPathList() helper method, which is based on the code in QQmlImportDatabase constructor. Later on, we can switch to QQmlImportDatabase::defaultImportPathList() when it has been made available in dev. Change-Id: I9f8363ba79ce39fb0482e6e44be0b1d1040c76e4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/quickcontrols2/qquickstyle.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp
index 471fcec2..143f599a 100644
--- a/src/quickcontrols2/qquickstyle.cpp
+++ b/src/quickcontrols2/qquickstyle.cpp
@@ -40,6 +40,7 @@
#include <QtCore/qdir.h>
#include <QtCore/qdebug.h>
#include <QtCore/qsettings.h>
+#include <QtCore/qlibraryinfo.h>
#include <QtGui/private/qguiapplication_p.h>
#include <QtQml/private/qqmlmetatype_p.h>
#include <QtQml/qqmlengine.h>
@@ -82,6 +83,23 @@ QT_BEGIN_NAMESPACE
\sa {Styling Qt Quick Controls 2}
*/
+// TODO: QQmlImportDatabase::defaultImportPathList()
+static QStringList defaultImportPathList()
+{
+ QStringList importPaths;
+ importPaths.reserve(3);
+ importPaths += QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
+
+ if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) {
+ const QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH");
+ importPaths += QString::fromLatin1(envImportPath).split(QDir::listSeparator(), QString::SkipEmptyParts);
+ }
+
+ importPaths += QStringLiteral("qrc:/qt-project.org/imports");
+ importPaths += QCoreApplication::applicationDirPath();
+ return importPaths;
+}
+
struct QQuickStyleSpec
{
QQuickStyleSpec() : resolved(false) { }
@@ -125,7 +143,7 @@ struct QQuickStyleSpec
if (QGuiApplication::instance()) {
if (!style.contains(QLatin1Char('/'))) {
const QString targetPath = QStringLiteral("QtQuick/Controls.2");
- const QStringList importPaths = QQmlEngine().importPathList();
+ const QStringList importPaths = defaultImportPathList();
for (const QString &importPath : importPaths) {
QDir importDir(importPath);