summaryrefslogtreecommitdiffstats
path: root/src/quick3d
Commit message (Collapse)AuthorAgeFilesLines
* ResourceAccessor: allow read-only access to texturesLaszlo Agocs2018-08-101-1/+1
| | | | | Change-Id: I0a8d20081912f3ff9a037cab74702581b3b02613 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Doc: Use correct module namePaul Wicking2018-07-301-1/+2
| | | | | | | | | QML: Importing Qt3D.Scene2D doesn't work, QtQuick.Scene2D does. CPP: Specify header file, as convenience header doesn't exist. Task-number: QTBUG-67370 Change-Id: Ia53e92c076f52bbb81b91370425279c44bf9e3c5 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix deadlock in scene2dMäättä Antti2018-06-262-1/+25
| | | | | | | | | Use the SurfaceLocker only when using ANGLE. Don't lock the texture when using ANGLE. Task-number: QTBUG-69039 Change-Id: Ib95fcf05febe1ec9c3ddc225932b5e8d15dc6937 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Doc: Add missing dots (qt3d)Paul Wicking2018-06-191-1/+1
| | | | | | Task-number: QTBUG-68933 Change-Id: I4226b8b9d70548b6921948c5ea47520f40f5df98 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix build without features.qml-delegate-modelTasuku Suzuki2018-05-151-2/+24
| | | | | | Change-Id: I349a6ea5440aef5bc354ce90bc24284407893c60 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Change scene2d to always clear the windowMäättä Antti2018-05-081-1/+2
| | | | | | | | | | Always clear the window. This enables transparency. Task-number: QT3DS-1497 Change-Id: I2186771ee81963f599048a74b8778fcfead4c75a Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix for a missing headerNikolay Zamotaev2018-05-041-0/+1
| | | | | | | | | | | | QQmlIncubator was used in the code, but not included. Change-Id: Ie31be9578c24ae39ca0685fd8b4a050df6680bee Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Nikita Krupitskas <nkrupitskas@luxoft.com> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Svetlana Abramenkova <sabramenkova@luxoft.com> Reviewed-by: Nikolay Zamotaev <nzamotaev@luxoft.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Doc: Add basic documentation for Scene3D QML modulePaul Wicking2018-04-263-13/+67
| | | | | | | | | | | Adds Scene3D as QML module. Provides preliminary documentation for Scene3D QML type. Task-number: QTBUG-61651 Task-number: QTBUG-54816 Change-Id: I2811bb2165ca0adde574ddde70fa7185b3c03083 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Scene3DRenderer: Do not call windowChanged lambda on destroyed objectOliver Wolff2018-04-231-1/+1
| | | | | | | | | By passing "this" as connect's third parameter we make sure that the lambda in question is not called on destroyed objects. Task-number: QTBUG-67324 Change-Id: I05c45b2ab7b4c81bbf462587515779cf4ef88232 Reviewed-by: Mike Krus <mike.krus@kdab.com>
* Revert "Doc: Divide documentation into submodules"Topi Reinio2018-04-203-146/+0
| | | | | | | | | | | This reverts commit c8964b8f1cf56718a189b0f57bad446cec30a8b8. QDoc now supports documentation-specific custom module headers and include headers that allow us to keep using a single documentation project that covers multiple modules. Change-Id: I84706a7149097a6b03f0f266e55d6f712a6c773e Reviewed-by: Martin Smith <martin.smith@qt.io>
* Document state of the Qt 3D modulesKai Koehne2018-03-121-4/+6
| | | | | | | | | | | | | Do make it explicit which ones are still in development also in the landing page, and add \preliminary and \since tags (for released and TP modules, respectively). Note that the \preliminary, \since tags currently do not work for \qmlmodule, which hopefully gets fixed at one point: QTBUG-65963. Change-Id: I6648311c38f331286be37eefa60794984cd239b7 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Enable alpha blending on QTextureMaterialMike Krus2018-03-081-0/+1
| | | | | Change-Id: I8466ccd47f8bda9fec184f548a2df7807d456ac7 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* Revert "Keep rendering in sync with aspect jobs by adding barriers"Paul Lemire2018-02-282-3/+6
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 46319648436814afb5a77755dde6681e304befaf. We want to be able to render one set of RenderViews for frame n while concurrently building RenderViews for frame n + 1. The reverted commit removed that behavior which reduced the CPU time available to prepare a frame. This would cause on some scenes a failure to meet the ~10ms budget we have to prepare a frame. This is therefore a regression. The root cause behind this regression is that a job cannot be executed until all the jobs which have been previously launched have completed. The proposed solution would be to instead add an OpenGL command thread that can be used to load graphics resources required for the RenderViews directly when required. This would in turn allow to cache RenderViews and keep the concurrent behavior of RenderView submission and creation. With that goal in mind, the following patches will be rebased and updated https://codereview.qt-project.org/#/c/189309/ https://codereview.qt-project.org/#/c/189310/ Change-Id: I4879047c45986a0e615e3aef7b7352f82a04a9da Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Doc: Fix documentation warnings for Qt 3D CoreTopi Reinio2018-02-162-10/+2
| | | | | | | | | | | | This change fixes multiple QDoc warnings for Qt 3D Core that are related to how Clang parses the source code and the \fn QDoc commands. We still have a number of 'No documentation for ...' warnings left - those are not addressed in this change. Change-Id: Ia6394f453d7bd959bc4d4cc9347ac0039b80f661 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Merge remote-tracking branch 'origin/5.10' into 5.11Sean Harmer2018-02-153-10/+7
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/animation/doc/src/qt3danimation-module.qdoc src/render/backend/abstractrenderer_p.h src/render/backend/buffervisitor_p.h src/render/backend/renderer.cpp src/render/backend/renderer_p.h src/render/backend/triangleboundingvolume_p.h src/render/backend/trianglesextractor_p.h src/render/frontend/sphere_p.h src/render/jobs/calcboundingvolumejob.cpp src/render/jobs/job_common_p.h src/render/jobs/pickboundingvolumejob.cpp src/render/jobs/pickboundingvolumejob_p.h src/render/jobs/pickboundingvolumeutils.cpp src/render/jobs/renderviewjobutils_p.h tests/auto/render/boundingsphere/tst_boundingsphere.cpp tests/auto/render/commons/testrenderer.h tests/auto/render/raycasting/tst_raycasting.cpp tests/auto/render/render.pro tests/auto/render/renderer/tst_renderer.cpp Change-Id: I76633bc5a5a065e5f9ea62cc16563377e5c693a3
| * Merge remote-tracking branch 'origin/5.9' into 5.10Sean Harmer2018-02-061-5/+8
| |\ | | | | | | | | | Change-Id: I72fdfb9a20be2f819542243e888756818b03c28e
| | * Fix crash in scene2d at shutdownMäättä Antti2018-02-061-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The resource manager policy for scene2d nodes has been changed so the scene2d constructor gets called multiple times at startup. That in turn increments render thread user counter every time. The cleanup code gets called for each instanciated QScene2D node so at shutdown the counter never reaches zero and the render thread is not closed properly. Change the implementation so that the counter gets incremented only when the render thread has been properly initialized. Task-number: QTBUG-66003 Change-Id: I33a5b1f407e65329776bcabe0b66ff049581a435 Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Render: Use SIMD Vectors and Matrices in the backendPaul Lemire2018-02-021-4/+4
| | | | | | | | | | | | | | | Change-Id: I19b3b2f8fcb06eb2bc600ebe370465dd15a8eabc Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Keep rendering in sync with aspect jobs by adding barriersSvenn-Arne Dragly2018-02-022-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes sure that jobs that depend on a specific state of the renderer (such as context being initialized) never run before this is the case. This reduces the number of possible race conditions and checks we need to do to ensure the jobs and the renderer are in the correct state. This way we no longer swap buffers when nothing has been rendered, which in turn makes sure that we only draw one frame when the render policy is OnDemand and there are no changes. This change also adds a number of assertions on pointers to resources to make it easier to detect missing job dependencies. Finally, this change overhauls the job dependencies in Renderer and RenderViewBuilder. Task-number: QTBUG-66024 Change-Id: I3e4e9dd0dd53b5c88f5c1b17d68df42f28eae794 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10.1' into 5.11Liang Qi2018-02-141-5/+8
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/render/backend/renderer.cpp src/render/backend/renderer_p.h tests/auto/render/renderer/tst_renderer.cpp Done-with: Svenn-Arne Dragly <svenn-arne.dragly@qt.io> Change-Id: I2ca9bac4777e51434579edf86030414734f533ac
| * | | Fix crash in scene2d at shutdownv5.10.1Määttä Antti2018-02-081-5/+8
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The resource manager policy for scene2d nodes has been changed so the scene2d constructor gets called multiple times at startup. That in turn increments render thread user counter every time. The cleanup code gets called for each instanciated QScene2D node so at shutdown the counter never reaches zero and the render thread is not closed properly. Change the implementation so that the counter gets incremented only when the render thread has been properly initialized. Task-number: QTBUG-66003 Change-Id: I33a5b1f407e65329776bcabe0b66ff049581a435 Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> (cherry picked from commit 564dfd87c5b1317dcf9fbc4d1c8d858c72513421) Reviewed-by: Antti Määttä <antti.maatta@qt.io>
* | | Doc: Divide documentation into submodulesTopi Reinio2018-02-093-0/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QDoc in Qt 5.11 will use Clang (libclang) to parse C++ documentation. In order to do that, Clang needs to have the include paths available when parsing source; qmake provides that information to QDoc but only when the documentation project is located under the correct module (source) path. By having dedicated doc projects for Qt 3D Core, Render, Input, etc. the number of documentation warnings is signicantly reduced. A top-level 'Qt 3D' project is still kept, and contains the landing page, overview, examples, and top-level 'C++ classes' and 'QML types' pages that list all types documented across all Qt 3D submodules. Change-Id: Id5936de36f31c2a8764a64e1e9d7ae0d10e8ab14 Reviewed-by: Martin Smith <martin.smith@qt.io>
* | | Add support for layers to control ray castingMike Krus2018-02-055-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RayCaster and ScreenRayCaster can have a number of layers which are used to control how entities with the matching layers are handled for ray casting. Similar rules apply as for LayerFilter in the frame graph. Change-Id: I9f666563a686ac99d7f178da33a539ba9edef51b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | QtQuick API for ray castingMike Krus2018-02-018-3/+592
| | | | | | | | | | | | | | | | | | | | | | | | Overrides hits property with QJSValue that can be interpreted from Javascript Change-Id: I8795b1fc9fdf4f36357c4bb5c8c5d0b7c5fd6c75 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-222-1/+6
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/render/backend/renderer_p.h src/render/geometry/geometryrenderer.cpp src/render/geometry/qmesh.cpp src/render/geometry/qmesh_p.h tests/auto/render/commons/testrenderer.h tests/auto/render/meshfunctors/tst_meshfunctors.cpp tests/auto/render/qmesh/tst_qmesh.cpp Change-Id: Ia078029e2faf23fe253c5ce385e393c094266e3b
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-222-1/+6
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/render/backend/renderer.cpp Change-Id: I691f54cd6daef8a966df37d447164c94badce34c
| | * Merge remote-tracking branch 'origin/5.9.4' into 5.9Liang Qi2018-01-182-9/+20
| | |\ | | | | | | | | | | | | Change-Id: I9c8aa5d2010fcc622b9cce3031e58a46b74ea2fa
| | | * Scene3DRenderer: ensure window pointer stays the same while renderingv5.9.4Paul Lemire2018-01-102-9/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears that the pointer value for the window could in some cases be updated meanwhile we were rendering, which resulted in random crashes. We now save the window pointer to a member variable on startup or whenever the windowChanged signal is fired and use a mutex to ensure the pointer won't change while we are rendering. This also covers the case where the item is destroyed but the cross-thread signals are not received before rendering happens. Task-number: QTBUG-63897 Task-number: QTBUG-65407 Change-Id: I5f2797e2210b532f9086ed186959fce27ea9f514 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * | Scene3D: allow to force blocking renderingPaul Lemire2018-01-162-1/+6
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using Scene3D, when the jobs preparing the render commands for the 3D scene take too long (more than the QtQuick refresh rate), the Scene3D wouldn't render anything when QtQuick requested it to. Then, the next time it would be asked to render (next QtQuick frame), if the jobs have finished by then, it will render. If the jobs are still not ready, then the above process is repeated. This patch introduces an environment variable SCENE3D_BLOCKING_RENDERMODE which can be set to force Scene3D to wait (for at most 10ms) instead of returning immediately for the jobs being ready. Change-Id: I2db10e622570a7bc8a2e2cbaff113c110135cd3e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge branch '5.10' into devSean Harmer2018-01-174-9/+14
|\| | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I248aa369ba98659a61e563fd29cc811c76ea1e2d
| * | Merge branch '5.9' into 5.10Sean Harmer2018-01-124-9/+14
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/animation/backend/handle_types_p.h src/extras/defaults/qtexturematerial.h src/render/backend/entity_p.h src/render/backend/handle_types_p.h src/render/backend/renderview.cpp src/render/io/scenemanager.cpp Change-Id: Ic145062cc98360e9067fd60f0992c7a6b51e41bb
| | * Set devicePixelRatio on item size changeMorten Johan Sørvig2017-12-143-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Propagate the dpr to the QRenderSurfaceSelector in addition to the the item size. Task-number: QTBUG-62235 Change-Id: I6555685392334b8edf2327fae97d5d531cffeaae Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | * Quick3DNodeInstantiatorPrivate: Fix build after private API changeFriedemann Kleint2017-12-141-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | qtdeclarative/60d589ccddb036e84883a6c2ef63a5292c8ad022 changed QQmlInstanceModel::object() to take an enumeration. Task-number: QTBUG-61537 Change-Id: I2fab7e80b728f9265e201f47614a79167199667f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | Remove hardcoded C++ version for MinGW/GCCKai Koehne2018-01-116-18/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was apparently needed for older MinGW-w64 headers that did not properly define some common system functions otherwise. Anyhow, it is not required anymore for newer MinGW-w64, and actually breaks compilation with gcc 6 and newer: There we enable shift-overflow=2, which also warns about shifting into the sign bit for C++11, but not for C++14. Task-number: QTBUG-60249 Change-Id: I53bc858c6f8baf9b60940904b3b28f7a49ab28e6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10' into devLaszlo Agocs2017-12-132-8/+19
|\| | | | | | | | | | | Change-Id: Ib51c8311ce78b2fec62dd0c09cb943a85a7d0b2b
| * | Scene3DRenderer: ensure window pointer stays the same while renderingPaul Lemire2017-11-232-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears that the pointer value for the window could in some cases be updated meanwhile we were rendering, which resulted in random crashes. We now save the window pointer to a member variable on startup or whenever the windowChanged signal is fired and use a mutex to ensure the pointer won't change while we are rendering. Change-Id: I93ade6bd549886b75140484c83fe59187d47ed9f Task-number: QTBUG-63897 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10' into devAndy Nichols2017-11-201-0/+2
|\| | | | | | | | | | | Change-Id: Ia6496e1ea22f2393a28e37cdd9f6e34f7613db49
| * | Replace all phong variants with QDiffuseSpecularMaterialKevin Ottens2017-11-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This one reconfigures its graph layers and render states properly based on it properties. As such it covers all the features coming from the various phong materials we had in the past. That's why they are all marked as deprecated. Change-Id: I9a74639d4cff5170b496d475c8a74b1e4e163b03 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-10-051-1/+1
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/animation/backend/channelmapper_p.h Change-Id: I4e0f59c6648925ba45d30ccc2405524a9e901a0e
| * | Port away from QBuffer::typeKevin Ottens2017-09-221-1/+1
| | | | | | | | | | | | | | | Change-Id: I910d1fa7099dc726e022cbf35702b0b58fbac64e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Replace Q_DECL_FINAL with finalKevin Funk2017-09-253-8/+8
| | | | | | | | | | | | | | | Change-Id: Ia80d1cb9cc96d76f8b367caa725c59a70ae0a4d5 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Replace Q_DECL_OVERRIDE with overrideKevin Funk2017-09-2526-41/+41
| | | | | | | | | | | | | | | Change-Id: I92c955068e233c50043ad7d06a32300dd386c24d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-09-2217-48/+38
|\| | | | | | | | | | | Change-Id: Ifdf71e3c33a7d1a6c100bba65722625ea19e0b81
| * | Merge branch '5.9' into 5.10Sean Harmer2017-09-121-1/+1
| |\| | | | | | | | | | Change-Id: Id6a3d4ec579a2f2a2e559c22a2293d0e184f0bdf
| | * Qt3DQuickWindow: Instantiate QQmlAspectEngine after aspectsWieland Hagen2017-09-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If not, some aspect's library might not have been loaded yet, when the QQmlAspectEngine is created. This means that their static aspect registration code will not have been run, causing the QAspectFactory to not include it in the defaultAspects when it is created. Following calls to QQmlAspectEngine::registerAspect() will fail, because the engine was created too early. Change-Id: I96dc8a972dc4fbd1cf3a8d2d91067d59e0d72e57 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | QMetalRoughMaterial replaces QTexturedMetalRoughMaterialKevin Ottens2017-09-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is a complete drop in replacement now, no need to keep code for both. We use inheritance so that properties in QMetalRoughMaterial can be versioned properly. Change-Id: Ia95b40c5abd466fbb20e5b15ca4e6d167fb80ec3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Use layers to have only one graph for Metal/RoughKevin Ottens2017-09-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both QMetalRoughMaterial and QTexturedMetalRoughMaterial use the same graph now. Also QMetalRoughMaterial does the job to be clever and activate the right layers depending on the type set on the properties (which is why they are now all variants). QMetalRoughMaterial can then be used as a drop in replacement for QTexturedMetalRoughMaterial. Change-Id: Ia52fe4608aca5558642599ed435f3cd9ac93e651 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * | Export QSkeletonMapping to QMLSean Harmer2017-09-021-1/+4
| | | | | | | | | | | | | | | Change-Id: I5fe5f7e41b49354075f410993bfa51897fde9bce Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | Alter QChannelMapping to accept QAbstractChannelMapping pointersSean Harmer2017-08-312-18/+18
| | | | | | | | | | | | | | | | | | | | | In preparation for the new mapping subclasses. Change-Id: I3d659b350da72cca9f5ad195f7aa7fea3d943810 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
| * | Re-enable the QQmlType code paths in the node factoriesSean Harmer2017-08-2512-27/+13
| | | | | | | | | | | | | | | Change-Id: Ieacfbfb25de4840d7c428f89cd1f7d178852036e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>