diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-04-23 09:33:25 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-04-23 09:34:29 +0200 |
commit | 580fa7dc88aae23053e44ffa335a15f6af112a20 (patch) | |
tree | 5bc915d7c2e252739122d9441bd0d7fa7175d0c2 /tools | |
parent | 6767114285db9d0e16dc278d08f231e8561546b4 (diff) | |
parent | c00283bb3bb966bf60c307ec8283bd98c12318bf (diff) |
Merge remote-tracking branch 'origin/dev' into wip/scenegraphng
Change-Id: Ifec879473540b609403ac951967f6d9ecb0bb6f0
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmlcachegen/qmlcachegen.cpp | 28 | ||||
-rw-r--r-- | tools/qmlimportscanner/main.cpp | 21 | ||||
-rw-r--r-- | tools/qmlscene/main.cpp | 31 | ||||
-rw-r--r-- | tools/tools.pro | 2 |
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 |