summaryrefslogtreecommitdiffstats
path: root/src/runtime
Commit message (Collapse)AuthorAgeFilesLines
* Fix data inputs with delayed loadingv2.7.0-rc2Jere Tuliniemi2020-05-083-0/+18
| | | | | | | | | Initialize data inputs and outputs every time a presentation is loaded. Task-number: QT3DS-4105 Change-Id: If2e9a6d95cc40109cb48f4d4d8b5dc88f963fb74 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Fix activating child elements when di activatingAntti Määttä2020-05-041-7/+12
| | | | | | | | | | Time-activation is not done for child elements in all cases. Add check for it in the activation handler. Task-number: QT3DS-4100 Change-Id: Ib34777afc35db7a0ce6748da01e6feec1de37f5e Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
* Add support for skipping rendering framesKaj Grönholm2020-04-161-2/+24
| | | | | | | | | | Add skipFramesInterval property into Q3DSViewerSettings. This property can be used to limit the rendering framerate, decreasing the CPU/GPU usage. Task-number: QT3DS-4088 Change-Id: Icbf5cf208b663dbef1df6096994b94686571e357 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Add support for progressive stereoscopic renderingKaj Grönholm2020-04-081-6/+13
| | | | | | | | | | | | In progressive mode, single eye is rendered per frame. So full rendering of stereoscopic view takes 2 frames. This mode can be enabled from Q3DSViewerSettings, and for viewer from menu or with "--enableprogressivestereo" command-line parameter. Task-number: QT3DS-4076 Change-Id: Ie69e37da028743164b959036136485b88c61b009 Reviewed-by: Janne Kangas <janne.kangas@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Delayed loading: Load subpresentation with setAttributeJere Tuliniemi2020-03-262-1/+19
| | | | | | | | | | Trigger a load when changing the subpresentation attribute of a material. Also add the subpresentation to the activity list. Task-number: QT3DS-4090 Change-Id: Ief5c819bcf5cdf94702ba96e71491c8c898d02a6 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Make sure GoToTime works also when triggered at simultaneous activationJanne Kangas2020-03-255-9/+56
| | | | | | | | | | | Queue goto time command and skip rollbacking the newly activated slide in the case we receive both goto time and goto slide commands. Instead, go to specified time after the slide has been reaactivated (entered). Task-id: QT3DS-4001 Change-Id: I2dd8d6ec3a42dcd65f40adb7920b34183c50b062 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Add dynamic layer resizingJere Tuliniemi2020-02-283-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a boolean property to layer that enables dynamic resizing. The screen space bounds of the layer content are calculated and the layer resized to fit the content and exclude empty space. Padding property is also added that pads the resized layer so that minimal changes to the content won't trigger another resize. Padding can be set by pixel amount or by percentage of the size. To provide accurate 2d bounds, each active objects bounds are projected separately to the screen. A boolean property to only project combined bounds is provided but lowers the accuracy while limiting projections to 8. Known issues: - Temporal AA doesn't work with resizing correctly - Temporal AA leaks GPU memory when resizing - Editor picking doesn't work correctly with dynamically resized layers - Render to viewport doesn't yet support resizing Task-number: QT3DS-4030 Change-Id: Ibc727e078129eee15021cc97105b4cdf9a5a3196 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Remove evaluator type datainput dead codeJanne Kangas2020-02-213-181/+0
| | | | | | | Task-id: QT3DS-3912 Change-Id: I76415b68bbe145bcc308263228358f69cac89c3c Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Add size and format to textureid queryJanne Kangas2020-02-112-0/+37
| | | | | | | | | | | Returns texture size and format for layer and material textures. Add corresponding test. Task-id: QT3DS-4005 Change-Id: I773715712dc78cf511f6c4d0095f5491834df311 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Implement shader cache loading error handlingAntti Määttä2020-02-102-4/+10
| | | | | | | Task-number: QT3DS-4040 Change-Id: Ie5f8284ab76cd4aa5f3ff0701457f4ef84c3e215 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Merge branch '2.6'Antti Kokko2020-02-102-2/+2
|\ | | | | | | Change-Id: If10420b5b0ab59abb5238e0dddf903b98d8ccbd3
| * Fix crash in autotestv2.6.02.6Antti Määttä2020-01-302-2/+2
| | | | | | | | | | | | Task-number: QT3DS-4053 Change-Id: Ie0723839c5c56f6978ec7a4a1258acf311d89d57 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* | Load component subpresentation when neededJere Tuliniemi2020-02-061-4/+26
| | | | | | | | | | | | | | | | | | | | | | | | All components were iterated and included subpresentation loaded at the start. Now only components included in the master slide are loaded. Rest are loaded when the slide in which they reside is shown. Task-number: QT3DS-4057 Change-Id: I1e8f67f51fd452ac362c1020f7e9674bc86b7ec1 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* | Fix delayed loading data input crashJere Tuliniemi2020-02-051-1/+1
|/ | | | | | Task-number: QT3DS-4056 Change-Id: I4513214fa20e2c4b0e7a137fa97c648a644e0757 Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Optimize element attribute name hashingAntti Määttä2020-01-2218-301/+319
| | | | | | | Task-number: QT3DS-4041 Change-Id: I64ccd129b12053b057e5e992d89a05a2bc6cd33d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Don't render when scene is not changingAntti Määttä2020-01-222-6/+9
| | | | | | | | | | Reduce CPU and GPU load by checking if the scene has changed and render only if it has. Task-number: QT3DS-4042 Change-Id: I54e447760f04fdad8d64319f326245175b471331 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Implement culling mode for materialsAntti Määttä2020-01-213-0/+3
| | | | | | | | | | -Add culling mode for default material -Add Culling command to custom material. Task-number: QT3DS-1627 Change-Id: I519498ce4508c02527df628c36c0a62621e8e294 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Remove unused and duplicate codeAntti Määttä2020-01-203-213/+0
| | | | | | | | | -Remove tree traverse functions from actimation manager. -Remove duplicate element helper code. Change-Id: Ibf23c58755024a7374b8279861e4aad8fbcdd7c7 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Load referenced material assets upon useJere Tuliniemi2020-01-162-0/+8
| | | | | | | | | | | | | | | | | When using delayed loading, assets used by materials inside the material container are not loaded upon startup anymore. Instead the assets are loaded when entering the slide in which the material is referenced. This also fixes referenced materials that refer to an animatable material in another slide. Task-number: QT3DS-3100 Change-Id: If55c73e8f91389f3c47ae16357ebe6a473f43585 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Janne Kangas <janne.kangas@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Add toggle for disabling ambient occlusionJanne Kangas2020-01-153-0/+3
| | | | | | | | Task-id: QT3DS-4032 Change-Id: I27c6c7ad2a66fac0b654002933fc3216ecf8879c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Implement ordered groupAntti Määttä2020-01-133-0/+4
| | | | | | | | | | | Add ordered property to group, which disables automatic depth sorting for that group and all it's children. The group as a whole gets sorted with other objects as if it was one object. Task-number: QT3DS-3820 Change-Id: Iea71917fc78f4c543aa944d851c77b6794bd7d80 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Fix setting value for uninitialized attributesAntti Määttä2020-01-134-2/+38
| | | | | | | Task-number: QT3DS-4033 Change-Id: Idd1af454c066a359e85c384124e3f8fe8466f4f5 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Fix SceneElement::currentSlideIndexJanne Kangas2020-01-131-1/+7
| | | | | | | | | | | | | Fixes issue of current slide change signals not working from subpresentations. (Does not touch indexing conventions in SceneElement or Presentation.) Task-ID: QT3DS-3015 Change-Id: I74ef95d72efa1fc75674081e242c9f5526decf77 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Add project setting for automatically flipping compressed texturesJanne Kangas2019-12-122-3/+9
| | | | | | | | | | | Flip ktx and astc textures in shader if project settings has flipCompressedTextures flag set as true. Also, fix bug in shader generator UV flipping code. Task-id: QT3DS-4015 Change-Id: Ic406569c15e172c513f5d412ba41ab84348a392b Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Prevent loading subpresentation multiple timesAntti Määttä2019-12-101-2/+3
| | | | | | | Task-number: QT3DS-4027 Change-Id: I4612c54e39af44a2458052546f25a1d48a4e0ca4 Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Improve perf logging #2Kaj Grönholm2019-12-093-18/+26
| | | | | | | | | | | | | | | Improve startup perf logging, including: - Move outputting startup perf logs into better place. Previously only part of the logs were printed as output happened too soon, now printing at first frame rendering. - Show also amount of calls and cumulative timestamps. - Improve log labels formatting. - Add more logging points into hot spots. Task-number: QT3DS-4021 Change-Id: I7db5a11ff10be1ccb691f82b10161e8ba7c316a6 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Improve perf logging & timersKaj Grönholm2019-12-032-31/+34
| | | | | | | | | | | | | | | | | OpenGL runtime contains perf timers but they are not documented so probably not much used. Switch to using QT3DS_PERF_SCOPED_TIMER macro instead of direct SStackPerfTimer usage. Then SStackPerfTimer debugs overhead can be fully removed when QT3DS_ENABLE_PERF_LOGGING is not defined (default). Print first frame render time when qt3ds.perf_info is on. Task-number: QT3DS-4021 Change-Id: Id11a1c5bb8bf24f545e9bceb333212f345b29bb7 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Always handle datainput-driven activity changesJanne Kangas2019-11-203-4/+11
| | | | | | | | | | Handle datainput-driven eyeball (activity) change always regardless of element activation status in activation manager. Task-id: QT3DS-4003 Change-Id: I6ca0ec834d2ccbc3850c0b2849caee058b2d778d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Allow setting timeline value when element is about to activateAntti Määttä2019-11-203-2/+10
| | | | | | | | Task-number: QT3DS-4001 Change-Id: I9fbb1367999d2a3e3bea6520f9e59a820ef50c28 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Fix crash when retrieving a non-existent texture idJere Tuliniemi2019-11-201-2/+4
| | | | | | Task-number: QT3DS-4004 Change-Id: I2ce1af6e07ab18a835e21de5e92dc2ba6509229d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Fix component behavior when the parent group is inactiveJere Tuliniemi2019-11-074-1/+9
| | | | | | | | | | | Call GoToSlideIndex upon activation if a slide change has been queued for an inactive component. Task-number: QT3DS-3997 Change-Id: I63489cd438428546b04883d04ee5d40b04e1cb78 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Fix crash when queueing attributes with delayed loadingJere Tuliniemi2019-11-042-9/+12
| | | | | | | Task-number: QT3DS-3996 Change-Id: I24b96b4806cb24a92b199562d3f033ead47696d1 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Add legacy compile option for astc file typesv2.5.02.5Janne Koskinen2019-10-251-2/+4
| | | | | | | When enabled astc file is not loaded until needed for texture creation. Change-Id: I94d49087eaa1ba288372d7668c68ab1876255e01 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Fix datainput controlled component activity changev2.5.0-rc3v2.5.0-rc2Antti Määttä2019-10-181-1/+6
| | | | | | | | | | Datainput control check needs to be done in the Update too. Task-number: QT3DS-3988 Task-number: QT3DS-3989 Change-Id: Iab628ab5fcab57379c23ed8122d24d37f66b303b Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io> Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
* Fix materialdef special charactersv2.5.0-beta3Jere Tuliniemi2019-10-071-0/+1
| | | | | | | | | The materialdef xml file was not being read with a proper encoding. Task-number: QT3DS-3975 Change-Id: Iadc5ef1565b716a0d4a7330d5920648811c57ac6 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Use logging categories with all debug messagesAntti Määttä2019-10-071-17/+10
| | | | | | | | Task-number: QT3DS-3712 Change-Id: Ibb751d2ad462685f0ba39cef6a4d932708faac57 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Provide texture ids through the C++ APIJere Tuliniemi2019-09-302-0/+25
| | | | | | | | | | | | | | Image, subpresentation and layer texture ids are now provided by the presentation via an element path. The cached layer texture id is also stabilized. Instead recreating it every frame, the last effect is just rendered to the premade texture. For each intermediate effect, a new texture is still created. Task-number: QT3DS-3959 Change-Id: I2ad2b81be9ae61373a0bfd963501823f012e9fcc Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Add debug logging for element visibilities overridden by datainputJanne Kangas2019-09-231-4/+19
| | | | | | | | | | | | Output log when an element visibility is overridden via datainput and is no longer affected by slide transitions. This helps debugging visibility issues with presentations that use both datainput and slide initial values to control element visibility. Change-Id: I56fc39ff80851a16b0b2a90ca9d4c687d71750a3 Task-id: QT3DS-3951 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Fix loading subpresentations in preloadSlidev2.5.0-beta1Antti Määttä2019-09-191-1/+37
| | | | | | | | | | | Subpresentations were not loaded when calling preloadSlide. Add subpresentation loading handling into loadComponentSlideResources, which gets called when preloadSlide is called. Change-Id: I7bc8c5a799214534370af19e6e104e2846f38743 Reviewed-by: Janne Kangas <janne.kangas@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Add transparency mode selection to standard materialsJere Tuliniemi2019-09-193-0/+3
| | | | | | | | | | | | | | | | | | | | ASTC textures would need to be decompressed upon loading to scan for transparency, or the texture files would need their own user-defined settings to enable transparency. Instead, as a work-around, materials can be forced to be treated as transparent without manipulating opacity. This is implemented with a transparency mode drop down list containing "Default", "Force Transparent" and "Force Opaque" options. "Force Opaque" can be used to force the material to be treated as opaque even when the textures used are transparent. By default ASTC textures are treated as non-transparent. Task-number: QT3DS-3904 Change-Id: I22255ffb2e2be5efea3e56466d58ddcc46490bb2 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Janne Kangas <janne.kangas@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Add "astc" as an acceptable image suffixJere Tuliniemi2019-09-171-1/+2
| | | | | | | | Task-number: QT3DS-3903 Change-Id: Iff0b627f8dd1568ea09346068548e244cb4a9263 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Support QQuickImageProvider in the runtimeJere Tuliniemi2019-09-171-0/+4
| | | | | | | | | | | | | | | With QQuickImageProvider the user can make a callback method returning a custom QPixmap or QImage to the engine without accessing the filesystem. Texture sourcepaths are set using an image url scheme. For example "image://colors/blue" where "image://" tells the runtime to look for an image provider, "colors" is the image provider id and rest are the image id the provider uses to create the image. Task-number: QT3DS-3761 Change-Id: I830649359f9969e957a972a0c08d0ede6e46ee78 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Prevent crash when trying to preload non-existing slideAntti Määttä2019-09-171-0/+4
| | | | | | Change-Id: I342d6a8b5ee85d3836eef1fece0dd87b5efed215 Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Fix string comparison typesAntti Määttä2019-09-171-3/+6
| | | | | Change-Id: I4ffc26f35849b1ad86612393992e485ecd2fa240 Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* Implement shader cachingMiikka Heikkinen2019-09-122-7/+6
| | | | | | | | | | | | Currently loaded shaders can now cached with an API call in either source code or binary format. It is necessary to do it that way as the shader cache can only be created in the target hardware. Task-number: QT3DS-3914 Change-Id: I094e8624943904c311ada2259a84b8c183f792f5 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Make visibility setting for elements in master slide persistentJanne Kangas2019-09-115-5/+52
| | | | | | | | | | | | | | Make datainput-driven visibility setting persistent over slide changes, for elements that are on master slide. This prevents slide initial value from overriding the user set visibility. Override takes place at first DI-driven visibility change. Change-Id: I799872ebd9834df9e74dd1e5e53a59c57e02255f Task-id: QT3DS-3925 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
* Improve slide element finderJere Tuliniemi2019-09-051-0/+1
| | | | | | | The slide iteration can be stopped after finding the correct slide. Change-Id: I82b1385d8c4eadd21b27094c6003dfc4f90ee484 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Stop animation when property is controlled by datainputJanne Kangas2019-08-294-0/+51
| | | | | | | | | | | | Disable animation for the target property when datainput value is set. This is to prevent running animations from overriding datainput control, which happens by default in runtime engine due to ordering of scene update sequence. Change-Id: I148d7fd80ad01f4ec5ad1d5ba69ecc74865d27fb Task-id: QT3DS-3896 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Add property to Camera to enable frustum culling when neededAndy Nichols2019-08-293-0/+3
| | | | | | | | | | By default frustum culling is disabled because for most scenes all items are always visible. There is a not insignificant cost to doing frustum culling, so it shouldn't be the default behavior. Change-Id: Ibc0c0a4bd1cf65a215256de9ec22ca1d97eb6de5 Reviewed-by: Antti Määttä <antti.maatta@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* Add support for stereoscopic renderingKaj Grönholm2019-08-231-2/+15
| | | | | | | | | | | Initial support for top-bottom and left-right stereoscopic rendering on OpenGL runtime. Add settings into viewer menu to control these. Task-number: QT3DS-3212 Task-number: QT3DS-3868 Change-Id: I5b22169fd407118998a43c1e601cb60b7e3fd6a8 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>