summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wasm/qtloader.js
Commit message (Collapse)AuthorAgeFilesLines
* wasm: back out of calling onLoaded at first frameMorten Sørvig2024-04-221-3/+9
| | | | | | | | | | | | | | | Qt and application code expects that QScreen geometry should be available early in main(), after the QApplication constructor returns. This is not the case if onLoaded is called at later point in time, since the container element for the screen is typically made visible when onLoaded is called, and does not have valid geometry before. Change-Id: I62d87f01fce1cd601e7a70d842e22a61814c9db7 Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io> Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
* wasm: make qtloader.js use FS.createPreloadedFile when preloadingPiotr Wiercinski2024-03-141-23/+19
| | | | | | | | | | | | | | Currently qtloader.js fetches and copies the files manually. By doing so we are missing some preproccessing by Emscripten preload plugins. Use Emscripten API to preload files, so preload plugin for .so can download, compile and resolve dependencies of imported shared libraries. This makes looking for dependencies in preload_qml_import.py no longer needed. Remove redundant code. Fixes: QTBUG-121817 Change-Id: Idd35f25d5f54123910f813a636407eea23e157cb Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
* wasm: fix copy/paste error in FS export checkMorten Sørvig2024-02-191-11/+5
| | | | | | | | | | | | The check for environment variables was copied over from the ENV export test, but is not relevant for FS. Remove it and then inline at the call site since this this is now only three lines of code. Change-Id: If377401154ff1ef6c71a5f1ebeb6459118d4d395 Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* wasm: Don't suppress exceptions during main()Morten Sørvig2023-12-201-0/+17
| | | | | | | | | | | | | | | | | If there's e.g. an infinite loop during main() that would previously result in a blank page, but not error message. The expected case is that we would get a RangeError exception, but that exception never reaches the catch handlers in qtloader.js. Work around this by setting noInitialRun, followed by calling main manually. We then need to handle the case where the app.exec() workaround throws, which should not trigger an error. Pick-to: 6.7 Change-Id: Ia8431279308770981316cd168e4316341bfb2531 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: call onExit once and only once on exitMorten Sørvig2023-12-201-14/+24
| | | | | | | | | | | We listen to the onExit and on onAbort Emscripten events, and also handle exit by exception. Make sure we call onExit only once on exit, regardless of the order and number of Emscripten events. Pick-to: 6.7 Change-Id: I4833a1056fad0a2706bd6c0f0fce98fb052fe8c8 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: delay "qtLoaded" qtloader.js eventMorten Sørvig2023-12-181-2/+0
| | | | | | | | | | | | | | | | | | | | | | | Currently we send qtLoaded in response to Emscripten onRuntimeInitialized, which is sent just before or at the time main() is called. This can be too early if Qt (app) initialization is not instantaneous, in which case we risk displaying a blank page in between hiding the loading screen and showing the application. Change this to send qtLoaded when QCoreApplication has finished its constructor and the event loop is running. Also add the possibility of registering startup tasks which can delay sending qtLoaded further. We now require a QCoreApplication (or a subclass) instance for the qtLoaded event. onRuntimeInitialized can be used as a replacement if anyone needs the previous behavior. Change-Id: I9298e881d2909aac4040c5f2068e6c7d196196cc Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: add qtloader font loading documentationMorten Sørvig2023-12-181-0/+9
| | | | | | | | | | | | | | These are properties which can be set on the configuration objects passed to the qtLoad() function. They are not used by qtloader itself, at least in the current implementation In the future, qtloader could start the font loading process concurrently with downloading the wasm file. Change-Id: I7ee2f44831866ddeba737cec4a5c865dca479f2a Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
* wasm: fix qtloader.js preRun usageMorten Sørvig2023-12-121-7/+8
| | | | | | | | | | | | | | | | | | | Emscripten documents that preRun should be an array of functions, but also accepts setting it to a single function. qtloader.js was accidentally using this feature, which works as long as qtloader is the single user, but breaks if other code expects an array. A typical error in this case is: "Module.preRun.push is not a function" Fix this by creating and maintaining preRun as an array. Pick-to: 6.6 6.7 Change-Id: Ie1382695f3f25839cb971ab4adc81984fc8c53ca Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: clarify qtloader onExit behaviorMorten Sørvig2023-07-101-27/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | onExit is called whenever the application exits, i.e. when the app canvas should no longer be displayed and the loader/embedder code should take some action. Emscripten provides two callbacks which can be used here: - onExit, called when the app exits (but see EXIT_RUNTIME) - onAbort, called on abort errors. These map to the two cases Qt's onExit supports. onExit is not called when EXIT_RUNTIME is disabled, which means we don't need the special case for exit code 0. In addition call onExit on any exception. The second call to showUi() in html_shell.html is then not needed any more and we avoid duplicating the UI state handling in user code. Update the qtloader_integration test to handle changes in behavior (we no longer set the error text on exit). Use emscripten_force_exit() to simulate application exit - using this function makes Emscripten call onExit even when EXIT_RUNTIME is disabled. Pick-to: 6.6 Change-Id: I72b5463c1836e8d5054e594abbd304fbc67032b7 Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io> Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* wasm: Add qtloader compatibility APIMorten Sørvig2023-07-101-0/+54
| | | | | | | | | | | Implement the main features of the pre Qt 6.6 loader as adaption layer on top of the new loader. Pick-to: 6.6 Task-id: QTBUG-115049 Change-Id: Iabe860d3fb0488fd003876508787da3688e0c87b Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: add "preload" qtloader config propertyMorten Sørvig2023-07-041-0/+68
| | | | | | | | | | | | | | | | | | | | | | | Add support for downloading files from the web server to the in-memory file system at application load time. See included documentation for usage. This preload functionality is different from Emscripten's --preload-file and --embed-file in that the files are not packed to a single data file or embedded in the JavaScript runtime. Instead, the files are downloaded individually from the web server, which means that they can be cached individually, and also updated individually without rebuilding the application. Any file type can be preloaded. The primary use case (at the moment) is preloading Qt plugins and QML imports. Pick-to: 6.6 Task-number: QTBUG-63925 Change-Id: I2b71b0d6a2c12ecd3ec58e319c679cd3f6b16631 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: add "qtdir" qtloader config propertyMorten Sørvig2023-07-041-0/+16
| | | | | | | | | | | | | | | | | | | | | | | This points to the location where qtloader should find the Qt installation when loading Qt shared libraries and plugins. The path is relative to the path of the html file which contains the application, and is set to "qt" by default. Deployment of the Qt installation to the web server is left to the app developer, since this depends on the exact use case. One possible way to deploy is to create a "qt" symlink to the Qt installation, for instance: html/myapp/myapp.html html/myapp/myapp.wasm html/myapp/qt -> /path/to/qt Pick-to: 6.6 Task-number: QTBUG-63925 Change-Id: I76b129dffc75c06ff6bc67d8c20ce12557b32f31 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Make WASM export names different across modulesMikolaj Boc2023-06-201-1/+1
| | | | | | | | The export name is now ${TARGET_NAME}Entry. This can also be overridden by using QT_WASM_EXPORT_NAME, both in CMake and qmake Change-Id: I59c97ae6e22f0b2720716e9d7eff7b6b13d37ab5 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: Document (and rename) config.qt.moduleMorten Sørvig2023-06-201-2/+5
| | | | | | | | | | This property can take a either a WebAssembly.Module or a promise to a module, and we don't have to specify the exact type in the property name. Pick-to: 6.6 Change-Id: Iebaf52178253afe8c93cf78bbe0853461bf48b67 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* Correctly document qtLoad's return valueMikolaj Boc2023-06-081-7/+2
| | | | | | | Documentation got outdated during review of the new qt loader. Change-Id: I8e23016b9a42e5f003e88c58a8e546255b167983 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Modernize the qtloaderMikolaj Boc2023-06-051-574/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is a minimal version of qtloader. The load function accepts the same arguments as emscripten runtime with a few additions: - qt.environment - qt.onExit - qt.containerElements - qt.fontDpi - qt.onLoaded - qt.entryFunction State handling has been removed in favor of making the load async (assume loading when the promise is live). Public APIs getting crashed status, exit text and code have been refactored into the new qt.onExit event fed to load. No need for keeping the state in the loader. The loader is integration-tested. A test module with test APIs has been created as a test harness. The runtime APIs exposed by Qt (font dpi and screen API) are handled by the qtloader seamlessly. Change-Id: Iaee65702667da0349a475feae6b83244d966d98d Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: fix qtloader.js container element regressionMorten Sørvig2023-05-121-24/+10
| | | | | | | | | | | | | | | | | | | As of Qt 6.5 the html document should not create canvas elements directly, but instead create div container elements and let Qt create and manage the canvas elements. However, qtloaders.js has not been updated to match this and is still creating canvas elements when given div elements. Remove the canvas creation code and invert the primary and fallback case: config.containerElements is now passed to instance.qtContainerElements. config.canvasElements is copied to config.containerElements, if set. Change-Id: I7372db93ee4de5b23a0a5d992597a3fbd9711a33 Pick-to: 6.5 6.5.1 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
* wasm: make qtloader print stack trace on exceptionMorten Sørvig2023-01-091-0/+2
| | | | | | | | | | | We were displaying the exception type by on the error page, however the exception contains a stack trace as well which we can print to the console. Pick-to: 6.4 6.5 Change-Id: Ia6c95c3f179eb68e57f9d6d2d8ad960591d0b365 Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: support setting Emscripten configurationMorten Sørvig2023-01-011-1/+3
| | | | | | | | | | | | | | | | | Support passing Emscripten configuration options to the QtLoader constructor using the "moduleConfig" key. Previously, it was possible to set Emscripten config options on the global Module object. However, recent versions if Qt has switched to using the MODULARIZE=1 build setting, in which case there is no global object. Fixes: QTBUG-107979 Pick-to: 6.5 Change-Id: Ie99b772ddbb1d9f5464c868a43c821bae01519e0 Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Migrate to using the constructor of QtLoaderMikolaj Boc2022-11-181-4/+4
| | | | | | | | | | Wasm shell used to call the function QtLoader instead of constructing a new QtLoader. Change this. Also change the doc to recommend using the constructor. Change-Id: I57c52eab389aa82449c7db3f4c646ffb234df778 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Call qtUpdateApi on module as expectedMikolaj Boc2022-11-111-1/+1
| | | | | | | | | | | | The qtUpdateDpi function is a module function, not a scope function (regardless of it being window-scope self or QtLoader-scope self). Therefore it should be executed with module as this. Fixes: QTBUG-108112 Pick-to: 6.4 Change-Id: Ib4604a43dbdd0caa114d3d892ea97b5ee4c9a9a8 Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* qtLoader: Don't assign properties on random selfMikolaj Boc2022-11-011-0/+17
| | | | | | | | | | | | The 'const self = this;' declaration was omitted in QtLoader constructor, which made all of the self.something = value assignments actually assign to the scope self variable (window.self, in most cases). Make the loader always be constructed with 'new', and assign 'this' to 'self' to always assign properties to the QtLoader instance. Change-Id: I9cf7cc95e7341531a702edc431aa242b39911f66 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Use the correct module exports in qtloaderMikolaj Boc2022-08-031-4/+4
| | | | | | | | | Refactoring of module exports in qwasmintegration.cpp was not followed by adjusting the qtloader. Do this now. Fixes: QTBUG-105264 Change-Id: Ibb0a4a20c0df1409cdcbba04ebd42c1569ae586a Reviewed-by: David Skoland <david.skoland@qt.io>
* Streamline error handling in qtloader.jsDavid Skoland2022-06-031-13/+18
| | | | | | | | | | | | Added new function handleError which does the usual work whenever there there is an error, including logging the error to console. Also make the app exit when the emscripten module fails to load. Additionally, make sure we correctly report it as crash if the module fails to load. Change-Id: I9d723373a34ccbb146959a2207ebded8bcbd4f18 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Use SPDX license identifiersLucie Gérard2022-05-161-28/+2
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* qtloader.js: remove "getProcAddress" error filteringMorten Sørvig2022-05-131-6/+0
| | | | | | | | | Emscripten no longer prints an error for each getProcAddress lookup failure and this code can be removed. Change-Id: I082f420772677196c8eb82c49546825c750377ae Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: David Skoland <david.skoland@qt.io>
* qtloader.js: forward stdErr to console.warn()Morten Sørvig2022-05-131-1/+1
| | | | | | | | | This is the correct mapping, and as a bonus the Chrome browser provides a stack trace on all output from console.warn(). Change-Id: I4a1b95475679d6b54a0690f51c23683514fe7985 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: David Skoland <david.skoland@qt.io>
* wasm: Support non-canvas container elementsMorten Johan Sørvig2022-03-311-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Support specifying that Qt should use a div element as the root container, in which case canvas management is moved to Qt C++ code. This enables us to take ownership of the canvas and its configuration. In addition, it allows creating child elements for the Qt container (canvas element children have a special role are as fallback elements displayed in case the browser can’t show the canvas) Remove support for reading Module.canvas, which was deprecated in Qt 5. Add support for reading Module.qtContainerElements, which can be either a canvas element (legacy) or a div element (preferred). Deprecate qtCanvasElements and print warning on usage. Change QWasmScreen to accept either a canvas or any html element. In the latter case, create the canvas and configure it as required by Qt. Change-Id: I57df8fb5772b2bfbba081af3f572b8b0e7d51897 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: don’t exit on clean return from main()Morten Johan Sørvig2022-01-051-0/+6
| | | | | | | | | | | | | | | Qt 6 uses Emcripten’s default of not exiting the runtime when main() exits. Make qtloader not transition to the “Exited” state when main() exits with code 0, since this would hide the app canvas. (The app state tracking code in qtloader is by now outdated, and should be revisited.) Pick-to: 6.3 Change-Id: Ib47898f1dd93d87b2675f20cd39f96ac3cb681a7 Reviewed-by: David Skoland <david.skoland@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: Fix source code comment typosJonas Kvinge2021-10-121-2/+2
| | | | | Change-Id: I9b2b76c01880c7bb515fdc1a6c4ef1f0bcf6be95 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: add Emscripten module accessor to qtloader.jsMorten Johan Sørvig2021-08-271-0/+10
| | | | | | | | | | | | | | After enabling -s MODULARIZE=1 there is no longer a global MODULE object. Add module() accessor which can be used to retrieve the Emscripten module. This does not really fit with the current state tracking since the app transitions from “loading” to “running” before the module object is ready. We’ll have to revisit this at some point. Change-Id: Ib7191cf4ce436e1de99f84b63ed4c10936fa62b1 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: support setting environment againMorten Johan Sørvig2021-08-191-1/+1
| | | | | | | | After enabling -s MODULARIZE=1 there is no longer a global ENV. Use module.ENV instead. Change-Id: Ic6958f52c6ceb7014f7f2c78a73f2bce5a43bf41 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: enable MODULARIZE option and set EXPORT_NAMEMorten Sørvig2021-06-221-24/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | Make Emscripten generate a global constructor function ("createQtAppInstance()") instead of a global javascript module object. This enables more fine-grained control over module instantiation; previously the module object would be created when the runtime javascript was evaluated, and the number of emscripten module/instances was limited to one per page. Set EXPORT_NAME to “createQtAppInstance” which avoids collisions with other non-Qt Emscripten modules on the same page. A further improvement would be to include the app name in EXPORT_NAME, but this is not done at this time. Update the code in qtloader.js to call the constructor function instead of working on a global module object. The qtloader.js API is functional before the wasm and Emscripten modules have been instantiated; store properties and forward to the Emscripten module when it's created. Change-Id: I12c49a5b9a4a932bbc46fcc5e5ecc453fd0fe7f0 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm/js: fix invalid restartCount referenceAvindra Goolcharan2020-12-081-1/+1
| | | | | | | | | | | | The `restartCount` variable on line 245 is mutating global scope. The PR makes it consistent with the rest ob the code (`self.restartCount`). It was observed when importing the qtloader in a typical Webpack/Babel build environment. Change-Id: I338285f4f6bcb80df0c16d80cc3ebfec944a8be7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: support setting the font DPI from JSMorten Johan Sørvig2019-05-131-0/+14
| | | | | | | | | | | | | | | We have not really been able to determine what the default DPI should be, so make it configurable with API on qtloader.js: qtLoader.setFontDpi(72); Also lowers the default DPI to the standard value of 96 (down from Qt default 100). Task-number: QTBUG-75510 Change-Id: Ica1164c8d80bb06519233adebf2c9e400c0991ce Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* wasm: fix passing environmental variablesLorn Potter2019-05-061-1/+1
| | | | | | Task-number: QTBUG-75530 Change-Id: Ic0f0bd8ce863f55d737d96bbf9e5473466381c9b Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: hide canvas text caretMorten Johan Sørvig2019-04-041-0/+1
| | | | | | | | Another side effect of setting contenteditable on the canvas. Seen on Firefox. Change-Id: I789ba4d7e6fbbdbf14b66fe1ae57183ec04e04bb Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: add resizeCanvasElement() API to qtloader.jsMorten Johan Sørvig2019-04-011-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | HTMl does not have per-element resize events, which means Qt has not way of knowing that a canvas has been resized and that the canvas buffer size should be updated. Depending on the use case, the hosting JavaScript code that caused the canvas resize could also inform Qt that the canvas has been resized. Add API to do this, which calls the existing canvas/screen resize implementation. Other solutions taken/not taken: - browser window resize events: these are available, and we install an event handler in qwasmeventtranslator.cpp. - DOM mutation events: would detect changes to the the size attributes themselves, but not if the size indirectly changed, e.g. “width: 100%” depends on the parent width. Not implemented. Change-Id: Ib324bb30f523e9fceea68000b95bf857a1d36b6c Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: support adding and removing canvases at runtimeMorten Johan Sørvig2019-04-011-0/+20
| | | | | | | | | | | | | Add qtloader API: addCanvasElement() removeCanvasElement() These functions call the corresponding add/remove screen functions on QWasmIntegration. Task-number: QTBUG-64079 Change-Id: I537c11f3b5fb9240cca9b6313dd45f803d865ac6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* wasm: support rendering to multiple canvasesMorten Johan Sørvig2019-03-081-23/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt (via the the qtloader.js API) now supports rendering to multiple canvases. The application sees each canvas as a QScreen. Make qtloader.js support multiple canvases: var qtloader = QtLoader({ canvasElements : [array-of-canvas], showCanvas: function() { // make canvas(es) visible }, }); The canvases were previously created/returned by showCanvas(), however this function is called after the Qt app has been started and adding screens that that point is too late. (This worked before since there was only one screen, and no need to connect each screen instance to specific canvas.) Remove QWasmScreen, QWasmCompositor, and QWasmEventTranslator singletons from QWasmIntegration. These are are now crated per-screen and are owned by the QWasmScreen. Task-number: QTBUG-64079 Change-Id: I24689929fd5bfb7ff0ba076f66937728fa4bc4e4 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: improve clipboard fallback pathMorten Johan Sørvig2019-03-041-1/+8
| | | | | | | | | | | | | | | | | | | | | | This improves handling of cut/copy/paste clipboard events, ands allows clipboard access via the common keyboard shortcuts. Make the canvas be eligible for clipboard events by setting the contenteditable attribute. Install clipboard event handlers directly on the canvas. Suppress Ctrl+X/C/V key event handling in the keyboard event handler in order to make the browser generate clipboard events. Send synthetic key events from the clipboard event handlers to make the app copy/paste to Qt’s clipboard at the correct time. Access the system clipboard data using event.clipboardData. Task-number: QTBUG-64638 Change-Id: I584b78ffa2b755b1b76e477b970255c6e5522f6a Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Wasm: enable thread supportMorten Johan Sørvig2019-02-071-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | configure.json: Make the “thread” feature be allowed for wasm but disabled by default. Change qmake.conf and wasm.prf to enable Emscripten pthreads mode: - Add USE_PTHREADS=1 linker flag - Add PTHREAD_POOL_SIZE linker flag with a default pool size (4). - Add TOTAL_MEMORY linker flag to set available memory (1GB) It is possible to override options such as PTHREAD_POOL_SIZE from the application .pro file using QMAKE_WASM_PTHREAD_POOL_SIZE To change TOTAL_MEMORY, use QMAKE_WASM_TOTAL_MEMORY Make qtloader.js work in pthreads mode: - The Module.instantiateWasm callback must provide the module in addition to the instance to Emscripten. - Set Module.mainScriptUrlOrBlob so that the pthreads web workers can access the main script Task-number: QTBUG-64625 Change-Id: I1ab5a559ec97c27c5fc24500ba5f863bcd275141 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* WebAssembly for QtBaseMorten Johan Sørvig2018-08-301-0/+516
This is the squashed diff from wip/webassembly to dev. Done-with: Peng Wu <peng.wu@intopalo.com> Done-with: Sami Enne <sami.enne@intopalo.com> Done-with: Morten Johan Sørvig <morten.sorvig@qt.io> Started-by: Andrew Knight <andrew.knight@intopalo.com> Change-Id: I6562433c0a38d6ec49ab675e0f104f2665f3392d Reviewed-by: Lorn Potter <lorn.potter@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>