aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2019-04-23 09:33:25 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2019-04-23 09:34:29 +0200
commit580fa7dc88aae23053e44ffa335a15f6af112a20 (patch)
tree5bc915d7c2e252739122d9441bd0d7fa7175d0c2 /tools
parent6767114285db9d0e16dc278d08f231e8561546b4 (diff)
parentc00283bb3bb966bf60c307ec8283bd98c12318bf (diff)
Merge remote-tracking branch 'origin/dev' into wip/scenegraphng
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlcachegen/qmlcachegen.cpp28
-rw-r--r--tools/qmlimportscanner/main.cpp21
-rw-r--r--tools/qmlscene/main.cpp31
-rw-r--r--tools/tools.pro2
4 files changed, 38 insertions, 44 deletions
diff --git a/tools/qmlcachegen/qmlcachegen.cpp b/tools/qmlcachegen/qmlcachegen.cpp
index f7891e7d4b..df7468eaef 100644
--- a/tools/qmlcachegen/qmlcachegen.cpp
+++ b/tools/qmlcachegen/qmlcachegen.cpp
@@ -55,17 +55,8 @@ QSet<QString> illegalNames;
void setupIllegalNames()
{
- // #### this in incomplete
- illegalNames.insert(QStringLiteral("Math"));
- illegalNames.insert(QStringLiteral("Array"));
- illegalNames.insert(QStringLiteral("String"));
- illegalNames.insert(QStringLiteral("Function"));
- illegalNames.insert(QStringLiteral("Boolean"));
- illegalNames.insert(QStringLiteral("Number"));
- illegalNames.insert(QStringLiteral("Date"));
- illegalNames.insert(QStringLiteral("RegExp"));
- illegalNames.insert(QStringLiteral("Error"));
- illegalNames.insert(QStringLiteral("Object"));
+ for (const char **g = QV4::Compiler::Codegen::s_globalNames; *g != nullptr; ++g)
+ illegalNames.insert(QString::fromLatin1(*g));
}
struct Error
@@ -212,16 +203,13 @@ static bool compileQmlFile(const QString &inputFileName, SaveFunction saveFuncti
QmlIR::JSCodeGen v4CodeGen(irDocument.code,
&irDocument.jsGenerator, &irDocument.jsModule,
&irDocument.jsParserEngine, irDocument.program,
- /*import cache*/nullptr, &irDocument.jsGenerator.stringTable, illegalNames);
- v4CodeGen.setUseFastLookups(false); // Disable lookups in non-standalone (aka QML) mode
+ &irDocument.jsGenerator.stringTable, illegalNames);
for (QmlIR::Object *object: qAsConst(irDocument.objects)) {
if (object->functionsAndExpressions->count == 0)
continue;
QList<QmlIR::CompiledFunctionOrExpression> functionsToCompile;
- for (QmlIR::CompiledFunctionOrExpression *foe = object->functionsAndExpressions->first; foe; foe = foe->next) {
- foe->disableAcceleratedLookups = true;
+ for (QmlIR::CompiledFunctionOrExpression *foe = object->functionsAndExpressions->first; foe; foe = foe->next)
functionsToCompile << *foe;
- }
const QVector<int> runtimeFunctionIndices = v4CodeGen.generateJSCodeForFunctionsAndBindings(functionsToCompile);
QList<QQmlJS::DiagnosticMessage> jsErrors = v4CodeGen.errors();
if (!jsErrors.isEmpty()) {
@@ -247,8 +235,6 @@ static bool compileQmlFile(const QString &inputFileName, SaveFunction saveFuncti
if (!saveFunction(irDocument.javaScriptCompilationUnit, &error->message))
return false;
-
- free(unit);
}
return true;
}
@@ -256,7 +242,6 @@ static bool compileQmlFile(const QString &inputFileName, SaveFunction saveFuncti
static bool compileJSFile(const QString &inputFileName, const QString &inputFileUrl, SaveFunction saveFunction, Error *error)
{
QQmlRefPointer<QV4::CompiledData::CompilationUnit> unit;
- QScopedPointer<QV4::CompiledData::Unit, QScopedPointerPodDeleter> unitDataToFree;
QString sourceCode;
{
@@ -319,9 +304,7 @@ static bool compileJSFile(const QString &inputFileName, const QString &inputFile
{
QmlIR::JSCodeGen v4CodeGen(irDocument.code, &irDocument.jsGenerator,
&irDocument.jsModule, &irDocument.jsParserEngine,
- irDocument.program, /*import cache*/nullptr,
- &irDocument.jsGenerator.stringTable, illegalNames);
- v4CodeGen.setUseFastLookups(false); // Disable lookups in non-standalone (aka QML) mode
+ irDocument.program, &irDocument.jsGenerator.stringTable, illegalNames);
v4CodeGen.generateFromProgram(inputFileName, inputFileUrl, sourceCode, program,
&irDocument.jsModule, QV4::Compiler::ContextType::ScriptImportedByQML);
QList<QQmlJS::DiagnosticMessage> jsErrors = v4CodeGen.errors();
@@ -339,7 +322,6 @@ static bool compileJSFile(const QString &inputFileName, const QString &inputFile
generator.generate(irDocument);
QV4::CompiledData::Unit *unitData = const_cast<QV4::CompiledData::Unit*>(irDocument.javaScriptCompilationUnit->data);
unitData->flags |= QV4::CompiledData::Unit::StaticData;
- unitDataToFree.reset(unitData);
unit = irDocument.javaScriptCompilationUnit;
}
}
diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp
index 60e0f1773f..616de9e80d 100644
--- a/tools/qmlimportscanner/main.cpp
+++ b/tools/qmlimportscanner/main.cpp
@@ -89,13 +89,13 @@ QVariantList findImportsInAst(QQmlJS::AST::UiHeaderItemList *headerItemList, con
{
QVariantList imports;
- // extract uri and version from the imports (which look like "import Foo.Bar 1.2.3")
+ // Extract uri and version from the imports (which look like "import Foo.Bar 1.2.3")
for (QQmlJS::AST::UiHeaderItemList *headerItemIt = headerItemList; headerItemIt; headerItemIt = headerItemIt->next) {
QVariantMap import;
QQmlJS::AST::UiImport *importNode = QQmlJS::AST::cast<QQmlJS::AST::UiImport *>(headerItemIt->headerItem);
if (!importNode)
continue;
- // handle directory imports
+ // Handle directory imports
if (!importNode->fileName.isEmpty()) {
QString name = importNode->fileName.toString();
import[nameLiteral()] = name;
@@ -137,7 +137,7 @@ QVariantMap pluginsForModulePath(const QString &modulePath) {
qmldirFile.open(QIODevice::ReadOnly | QIODevice::Text);
- // a qml import may contain several plugins
+ // A qml import may contain several plugins
QString plugins;
QString classnames;
QStringList dependencies;
@@ -206,7 +206,7 @@ QPair<QString, QString> resolveImportPath(const QString &uri, const QString &ver
}
}
- // remove the last version digit; stop if there are none left
+ // Remove the last version digit; stop if there are none left
if (ver.isEmpty())
break;
@@ -426,7 +426,7 @@ QVariantList findQmlImportsInDirectory(const QString &qmlDir)
if (std::find_if(blacklist.cbegin(), blacklist.cend(), pathStartsWith(path)) != blacklist.cend())
continue;
- // skip obvious build output directories
+ // Skip obvious build output directories
if (path.contains(QLatin1String("Debug-iphoneos")) || path.contains(QLatin1String("Release-iphoneos")) ||
path.contains(QLatin1String("Debug-iphonesimulator")) || path.contains(QLatin1String("Release-iphonesimulator"))
#ifdef Q_OS_WIN
@@ -455,30 +455,29 @@ QSet<QString> importModulePaths(const QVariantList &imports) {
return ret;
}
-// Find Qml Imports Recursively from a root set of qml files.
+// Find qml imports recursively from a root set of qml files.
// The directories in qmlDirs are searched recursively.
// The files in qmlFiles parsed directly.
QVariantList findQmlImportsRecursively(const QStringList &qmlDirs, const QStringList &scanFiles)
{
QVariantList ret;
- // scan all app root qml directories for imports
+ // Scan all app root qml directories for imports
for (const QString &qmlDir : qmlDirs) {
QVariantList imports = findQmlImportsInDirectory(qmlDir);
ret = mergeImports(ret, imports);
}
- // scan app qml files for imports
+ // Scan app qml files for imports
for (const QString &file : scanFiles) {
QVariantList imports = findQmlImportsInFile(file);
ret = mergeImports(ret, imports);
}
-
- // get the paths to theimports found in the app qml
+ // Get the paths to the imports found in the app qml
QSet<QString> toVisit = importModulePaths(ret);
- // recursivly scan for import dependencies.
+ // Recursively scan for import dependencies.
QSet<QString> visited;
while (!toVisit.isEmpty()) {
QString qmlDir = *toVisit.begin();
diff --git a/tools/qmlscene/main.cpp b/tools/qmlscene/main.cpp
index 465bcb53d4..867267c821 100644
--- a/tools/qmlscene/main.cpp
+++ b/tools/qmlscene/main.cpp
@@ -42,6 +42,7 @@
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlcomponent.h>
#include <QtQml/qqmlcontext.h>
+#include <QtQml/qqmlfileselector.h>
#include <QtQuick/qquickitem.h>
#include <QtQuick/qquickview.h>
@@ -361,6 +362,7 @@ static void usage()
#endif
puts(" --textrendertype [qt|native].......Select the default render type for text-like elements.");
puts(" -I <path> ........................ Add <path> to the list of import paths");
+ puts(" -S <selector> .....................Add <selector> to the list of QQmlFileSelector selectors");
puts(" -P <path> ........................ Add <path> to the list of plugin paths");
puts(" -translation <translationfile> ... Set the language to run in");
@@ -457,6 +459,7 @@ int main(int argc, char ** argv)
Options options;
QStringList imports;
+ QStringList customSelectors;
QStringList pluginPaths;
// Parse arguments for application attributes to be applied before Q[Gui]Application creation.
@@ -522,12 +525,15 @@ int main(int argc, char ** argv)
options.resizeViewToRootItem = true;
else if (lowerArgument == QLatin1String("--multisample"))
options.multisample = true;
- else if (lowerArgument == QLatin1String("--core-profile"))
+ else if (lowerArgument == QLatin1String("--core-profile")
+ || qEnvironmentVariableIsSet("QMLSCENE_CORE_PROFILE"))
options.coreProfile = true;
else if (lowerArgument == QLatin1String("--verbose"))
options.verbose = true;
else if (lowerArgument == QLatin1String("-i") && i + 1 < size)
imports.append(arguments.at(++i));
+ else if (lowerArgument == QLatin1String("-s") && i + 1 < size)
+ customSelectors.append(arguments.at(++i));
else if (lowerArgument == QLatin1String("-p") && i + 1 < size)
pluginPaths.append(arguments.at(++i));
else if (lowerArgument == QLatin1String("--apptype"))
@@ -583,6 +589,8 @@ int main(int argc, char ** argv)
// TODO: as soon as the engine construction completes, the debug service is
// listening for connections. But actually we aren't ready to debug anything.
QQmlEngine engine;
+ QQmlFileSelector* selector = new QQmlFileSelector(&engine, &engine);
+ selector->setExtraSelectors(customSelectors);
QPointer<QQmlComponent> component = new QQmlComponent(&engine);
for (int i = 0; i < imports.size(); ++i)
engine.addImportPath(imports.at(i));
@@ -612,6 +620,19 @@ int main(int argc, char ** argv)
fprintf(stderr, "%s\n", qPrintable(component->errorString()));
return -1;
}
+
+ // Set default surface format before creating the window
+ QSurfaceFormat surfaceFormat;
+ if (options.multisample)
+ surfaceFormat.setSamples(16);
+ if (options.transparent)
+ surfaceFormat.setAlphaBufferSize(8);
+ if (options.coreProfile) {
+ surfaceFormat.setVersion(4, 1);
+ surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
+ }
+ QSurfaceFormat::setDefaultFormat(surfaceFormat);
+
QScopedPointer<QQuickWindow> window(qobject_cast<QQuickWindow *>(topLevel));
if (window) {
engine.setIncubationController(window->incubationController());
@@ -635,19 +656,11 @@ int main(int argc, char ** argv)
if (options.verbose)
new DiagnosticGlContextCreationListener(window.data());
#endif
- QSurfaceFormat surfaceFormat = window->requestedFormat();
- if (options.multisample)
- surfaceFormat.setSamples(16);
if (options.transparent) {
- surfaceFormat.setAlphaBufferSize(8);
window->setClearBeforeRendering(true);
window->setColor(QColor(Qt::transparent));
window->setFlags(Qt::FramelessWindowHint);
}
- if (options.coreProfile) {
- surfaceFormat.setVersion(4, 1);
- surfaceFormat.setProfile(QSurfaceFormat::CoreProfile);
- }
window->setFormat(surfaceFormat);
if (window->flags() == Qt::Window) // Fix window flags unless set by QML.
diff --git a/tools/tools.pro b/tools/tools.pro
index 2e2eb831a9..73cb6e2293 100644
--- a/tools/tools.pro
+++ b/tools/tools.pro
@@ -10,7 +10,7 @@ qtConfig(qml-devtools) {
qtConfig(commandlineparser):qtConfig(xmlstreamwriter): SUBDIRS += qmlcachegen
}
-qtConfig(thread):!android|android_app {
+qtConfig(thread):!android|android_app:!wasm {
SUBDIRS += \
qml