diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-11-17 12:40:53 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-11-17 14:11:31 +0000 |
commit | 2202d79b39ff90eed19fb8106f79d4604e47acfd (patch) | |
tree | 520589914ae527cd9a8fba92099efc4e602455e3 /src | |
parent | d46c60548b481ca9dce5964a98164c9948d2123b (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/quickcontrols2/qquickstyle.cpp | 20 |
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); |