summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Android: Use CaptureStillImage as default capture modeVal Doroshchuk2019-03-281-1/+1
| | | | | | | | Fixes tst_QCameraBackend::testCaptureMode. Change-Id: I2f6486102ebcbf7e1ab0feea8c13658772d5b90f Fixes: QTBUG-73582 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* winrt: Use highest supported resolution for camera preview/image captureOliver Wolff2019-03-282-7/+18
| | | | | | | | | | | Using the lowest supported resolution yields ugly results and has weird side effects (green bars). If no resolution is explicitly given, we should use the maximum supported solution for preview as well as capture. Task-number: QTBUG-72874 Change-Id: Ie0fae65180e66156c6de468f2cabb9122fe665ba Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Fix QCameraInfo to be invalid if camera failed to find deviceVaL Doroshchuk2019-03-251-2/+10
| | | | | | | | | | Since QCameraInfo uses deviceControl and infoControl to get info about camera, it needs to clear these controls if the camera failed to find a device by name. Change-Id: I1404f70234f978fa4568b6c883a5676f61e08145 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> (cherry picked from commit 42932e1a9dfd6699763b336f552e46f9b1ff30c9)
* Add source url to 'decoding error' warningRoland Rossgotterer2019-03-252-2/+2
| | | | | | | | | | | Previously, QSoundEffect logged a warning if the source could not be decoded, but without mentioning the source it tried to decode. When using multiple QSoundEffects in one application, adding the source to the warning will help to find the one causing the decode error. Change-Id: I4c6bbdfe4a62f650b64ab951bcc637febedae98e Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: André Hartmann <aha_1980@gmx.de>
* Fix compile failure with gstreamer 0.10Richard Oehlinger2019-03-181-0/+5
| | | | | | | | This fixes an compile failure introduced in commit 67c4ec55. Fixes: QTBUG-74475 Change-Id: I0dabb72f8b5cdd75336b15515381ff9d9442788f Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Doc: Fix documented QtMultimedia importKai Koehne2019-02-262-4/+4
| | | | | | | | Since change 871a097d0c6e8203f82 QtMultimedia is registered with the latest Qt minor version, but the documentation wasn't updated yet. Change-Id: I58eb629c5a2851f83231891b2e219210d79c862c Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Gstreamer: Set surface from renderer before creating pipelineVaL Doroshchuk2019-02-222-2/+7
| | | | | | | | | | | | | | When multiple pipelines are created, and one of these gets recreated, it picks up the last set surface. This is incorrect, as it needs a surface belonging to the current renderer. This patch sets the surface before creating pipelines, retrieving it from the current renderer. Task-number: QTBUG-73557 Change-Id: I0811f7262a0eca57e01361a55515351127520064 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Gstreamer: Fix compilation error with 0.10 versionVal Doroshchuk2019-02-141-5/+3
| | | | | | Task-number: QTBUG-73740 Change-Id: I1de087b63f65bab39351d5446254a8d1832e88c3 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Fix static build on WindowsKai Koehne2019-02-111-0/+4
| | | | | | Fixes: QTBUG-73464 Change-Id: I5d1052dec14bbe6ee69b348352991d14d63b9c76 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Fix crash in player example when close the window while playingVaL Doroshchuk2019-02-081-0/+3
| | | | | | | | | | | | | When it is playing and close the window: 1. The player object will be destroyed first (all QString's). 2. Next parent QWidget will be destroyed with all children. 3. While destroying QMediaPlayer from Player object, the playback will be stopped. 4. The status will be changed and Player::statusChanged will be called. The connection still exists. And since all string members are already freed, it produces a crash. Change-Id: I2c2fdca97f0ff4b300527b550ecc0c12b04e5b4e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* gpu_vivante depends on opengles2 and guiLiang Qi2019-02-061-1/+1
| | | | | Change-Id: I8317956994f586fa2272d5633af91325d277998b Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
* DirectShow: Fix crash when camera is being destroyedVal Doroshchuk2019-02-061-4/+1
| | | | | | | | | | | | If a camera is going to be destroyed, a service plugin releases media service, (which releases ds camera session) and might call CoUninitialize. This leads to a crash when DirectShowSampleGrabber is destroyed after releasing the camera. Added a fix to release the sample grabber together with camera session. Task-number: QTBUG-73461 Change-Id: I8e518d0242d983c8d2bb00c30ad87c7e8e1e2c93 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Android: Fix memory leak of GL resourcesVal Doroshchuk2019-01-312-8/+17
| | | | | | | | | | | | | | | | | DeferredDelete events have implicitly higher priority, which makes this event to be handled before MetaCall events. See QSGSoftwareRenderThread::sync(): ... QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); Where it processes deferred deletes and no meta calls will be delivered even if they were requested before the deferred delete. Task-number: QTBUG-67280 Change-Id: Iba23550d2cffb1cea1b4c2fe4c903078d9f2f046 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix comment for YUV fragment shadersSamuel Gaist2019-01-295-5/+9
| | | | | | | | | The comment contains information which makes it misleading to understand how the components are passed. Change-Id: I29cdb5eec1e8014fa7f0ca3f1a0f54258fdb431f Reviewed-by: Tomasz Olszak <olszak.tomasz@gmail.com> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Gstreamer: Set custom pipeline using urlVaL Doroshchuk2019-01-232-31/+60
| | | | | | | | | | | | | | | | | | Introduced possibility to set custom pipeline using url. Now the pipeline should be set only via QMediaPlayer::setMedia using url with scheme "gst-pipeline". For example, "gst-pipeline: videotestsrc ! autovideosink" Since setting the media should be done after renderer in QML, hence a surface is ready to be used and "qtvideosink" is available in pipelines. To use it with QVideoWidget, setting the pipeline should be done after passing video output. Change-Id: Id43f8681069e4bca2eafb154df2c5d446a0ca498 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* Migrate QGstUtils to use QRegularExpressionSamuel Gaist2019-01-121-4/+6
| | | | | | | | | This patch updates the QGstUtils class to use QRegularExpression in place of QRegExp which is to be considered deprecated. Fixes: QTBUG-72589 Change-Id: I67e189c48688b512cc76c884fd2a7e51e1b188f9 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* Gstreamer: Negotiate default settings before encoding container profileVaL Doroshchuk2019-01-111-2/+2
| | | | | | | | In case if container format, video and audio codec are not provided, need to fetch default ones. Change-Id: I616fabc7bf9ec7c7a08a4c5dacad87a1748209f3 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Return ServiceMissingError if no camera found by nameVaL Doroshchuk2019-01-071-24/+19
| | | | | | | | If no camera devices found with requested name, the object should be invalid. Task-number: QTBUG-54901 Change-Id: I54037c5c7caad09da2df51eb0624eb0e88f12bf8 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* GStreamer: remove unnecessary <unistd.h> includesJ-P Nurmi2018-12-262-2/+0
| | | | | | | This makes it possible to build the GStreamer backend on Windows. Change-Id: I5b705524072d8bd89a7c9b834201b97e0d01d6cc Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* GStreamer camera bin service plugin: remove bogus export macrosJ-P Nurmi2018-12-264-4/+4
| | | | | | | Results to inconsistent DLL linkage errors on Windows. Change-Id: I0aebe05e40dbb4fac130c536849c68dd61aa12fe Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* QGstUtils: fix build with MSVCJ-P Nurmi2018-12-261-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | MSVC didn't like the #iffery that was done with GST_STATIC_CAPS(). The build error was: qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2121: '#': invalid character: possibly the result of a macro expansion qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2059: syntax error: 'if' qtmultimedia\src\gsttools\qgstutils.cpp(1323): error C2143: syntax error: missing ';' before '{' qtmultimedia\src\gsttools\qgstutils.cpp(1311): error C2143: syntax error: missing ';' before '}' qtmultimedia\src\gsttools\qgstutils.cpp(1325): error C2059: syntax error: 'return' qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2059: syntax error: '}' qtmultimedia\src\gsttools\qgstutils.cpp(1326): error C2143: syntax error: missing ';' before '}' qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2143: syntax error: missing ';' before '{' qtmultimedia\src\gsttools\qgstutils.cpp(1329): error C2447: '{': missing function header (old-style formal list?) Change-Id: Ic9ac64648aba396fc4ef433e73d5c72a8c1c3da1 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* WMF: Map PKEY_Media_EncodingSettings to QMediaMetaData::DescriptionVaL Doroshchuk2018-12-101-1/+1
| | | | | | | | | | According to https://docs.microsoft.com/en-us/windows/desktop/medfound/metadata-properties-for-media-files PKEY_Media_EncodingSettings is closed to description. Task-number: QTBUG-72287 Change-Id: I2cafc4b922ffc8ad01db43f8dfb97097f8185501 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* DirectShow: Don't queue video buffers from sample grabberVal Doroshchuk2018-11-291-5/+5
| | | | | | | | | | | | Fixed an issue when buffers are sent using queued connection. Thus all buffers were collected before they were handled. Now only last buffer is kept. Also moved handling of device lost timer to main thread. Task-number: QTBUG-72012 Change-Id: I338587c5854739d6081c5cb502377e5779776417 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* DirectShow: Restart not active surface when frame is receivedVal Doroshchuk2018-11-291-2/+2
| | | | | | | | | | | If playback is not stopped but EndOfMedia is received, it would be still possible to seek to previous position and start playback again which will cause empty video output because the surface has been already stopped and should be restarted. Task-number: QTBUG-42057 Change-Id: I5ca496ba3af5c27c0ad61edb35d758e201061595 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Windows: Repaint QVideoWidget when WM_PAINT or WM_ERASEBKGND receivedVal Doroshchuk2018-11-293-0/+24
| | | | | | | | | | | | | | | | Since updates are disabled, and no paint events will be sent to QVideoWidget, need to somehow repaint the video window. When BeginPaint is called outside of the expose event, the window might not be refreshed. So moved calling the repainting within the expose event. Also added repainting when the display rect is changed to immediate refreshing. Task-number: QTBUG-71326 Change-Id: I7c29b3f8ad35e33590c7b138a5141546ce3c1a42 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* DirectShow: use supported pixel formats for QCamera video surfaceIhor Dutchak2018-11-282-25/+29
| | | | | | | | | | [ChangeLog][DirectShow] Do not convert QCamera video frames to RGB32 if provided QAbstractVideoSurface supports frame pixel format, requested by QCameraViewfinderSettings. Task-number: QTBUG-68768 Change-Id: I78d0aaf6c22c4bfee2b17f78a3709d7ba9a8b4fa Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* DirectShow: Display windows error string when camera failsVal Doroshchuk2018-11-272-5/+6
| | | | | | | | | | Additionally to custom error messages it needs to show standard ones with error codes. Task-number: QTBUG-71851 Change-Id: I6504ec2417b0f686ab4e1a6902c4f00eeefcbbf2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* EVR: Prevent redefinition of MFVideoNormalizedRectMarius Kittler2018-11-181-1/+2
| | | | | | | | | | This establishes compatibility with MinGW-w64 headers 6.0 where MFVideoNormalizedRect has been added to evr.h. Task-number: QTBUG-70630 Change-Id: I49ac49bf9eda8ea281d9da799785e56373ae8f01 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Marius Kittler <mariuskittler@gmx.de>
* CoreAudio: Decrease volume when playback is stopped on macOSVaL Doroshchuk2018-11-162-18/+27
| | | | | | | | | | Since suddenly stopping the playback might cause popping/clicking noise, added decreasing volume when the stop is already requested but buffers are still available. Task-number: QTBUG-63492 Change-Id: Id6509faeab7fef445b13c45c7f424afa65efd1ab Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* DirectShow: Fix compiler warningsFriedemann Kleint2018-11-062-3/+1
| | | | | | | | | | | | | Fix: player\directshowiosource.cpp:100:22: warning: unused variable 'count' [-Wunused-variable] static const int count = sizeof(directshow_subtypes) / sizeof(GUID); player\directshowplayerservice.cpp: In member function 'virtual QMediaControl* DirectShowPlayerService::requestControl(const char*)': player\directshowplayerservice.cpp:237:27: warning: 'filter' may be used uninitialized in this function [-Wmaybe-uninitialized] setVideoOutput(filter); Change-Id: I0a9098db182d3954d50d5b23ca00424ee691f60d Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Do not create video profile if no codec providedVaL Doroshchuk2018-11-051-7/+4
| | | | | | | Since camerabin2 requires not empty caps (format) in gst_encoding_video_profile. Change-Id: Iba073138321635a51c9364d54ec95707ccbc7445 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Alsa: Do not open device twice in QSoundEffectVaL Doroshchuk2018-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | When either QSoundEffect::loadedChanged or QSoundEffect::statusChanged is emitted QSoundEffect::play() can be called which results to call QAudioOutput::start() twice. Added a fix to call QAudioOutput::start() only if QAudioOutput::state() is QAudio::StoppedState. Flow trace: 1. PrivateSoundSource::sampleReady() 2. QSoundEffectPrivate::setStatus(QSoundEffect::Ready) and emits statusChanged() or loadedChanged() 3. If there is a connection to QSoundEffect::loadedChanged/statusChanged and QSoundEffect::play() is called there. 4. QSoundEffect::play() calls QAudioOutput::start() because sample is ready 5. QAudioOutput::start() is called again within PrivateSoundSource::sampleReady() when QSoundEffectPrivate::setStatus exited. Change-Id: I7ad8e9126b6006e1972356c80a7fd2e5c6a5ea04 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Fix compiling issue with < 1.1.3 verVaL Doroshchuk2018-11-051-0/+4
| | | | | | | | GST_VIDEO_REGION_OF_INTEREST_META_INFO is available from 1.1.3 Task-number: QTBUG-64178 Change-Id: I70e99775bfa51679df387738924b7b8fabedaae0 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* WindowsAudioOutput: Introduce QT_WAVE_BUFFERS env varv5.12.0-beta3Val Doroshchuk2018-10-182-12/+22
| | | | | | | | | | | | | | | | | | Currently by default 5 wave buffers are created where each buffer contains buffer_size/5 bytes. If total buffer size is small enough, playing of these wave buffers might be finished before refilling them. Which leads crackling and another noise. Introduced QT_WAVE_BUFFERS env var which contains number of wave buffers. Must not be less than 5. If number of wave buffers is big enough, it ensures that there is always data to play. Task-number: QTBUG-45174 Change-Id: I66bf997411f858fbff822394bb748dea2086060e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-10-131-1/+1
|\ | | | | | | Change-Id: Ic398983a0a680738487476150e28593665db3fb2
| * Use the setDataSource(String) overload for non assets/file pathsAndy Shaw2018-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | The setDataSource(Context, Uri) is used for passing a Uri that refers to data in a content provider. Whereas the path passed here is going to be http/rtsp instead. This fixes the warning that comes up about it not being able to open the path provided. Task-number: QTBUG-50539 Change-Id: I79882fb6d6a5683b6b95f8f9d4e2af86ea916831 Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into 5.12v5.12.0-beta2Qt Forward Merge Bot2018-10-054-50/+78
|\| | | | | | | Change-Id: I70b363e614391ecce15ed55ef1267973c8b21355
| * DirectShow: Fix crash when camera destroyedVal Doroshchuk2018-10-051-1/+1
| | | | | | | | | | | | | | | | The lambda function is called even if the object is destroyed. Task-number: QTBUG-70932 Change-Id: I070059bd61769a6864a2848f2b537609577769de Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * EVR: Fix crash when no resources createdVal Doroshchuk2018-10-042-31/+16
| | | | | | | | | | | | | | | | | | Saved a copy of texture id in IMFSampleVIdeoBuffer and init it on first call. Task-number: QTBUG-70672 Change-Id: Iaf8ff4f3faa952846eca5a764c88e57807d4d211 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
| * Retrieve some information from the track metadata if availableJames McDonnell2018-10-011-18/+61
| | | | | | | | | | | | | | | | Later versions of the QNX 7.0.0 Multimedia component replace the top level audio/video metadata with track specific audio/video metadata. Change-Id: Ic88f23f8db9c06594da649d9e8fc4faf30acf1a0 Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
| * EVR: Fix crash when video source is changed and ANGLE is usedVal Doroshchuk2018-09-251-1/+1
| | | | | | | | | | | | Task-number: QTBUG-70672 Change-Id: I38c1e868dd05835489a49e6c29d9ad1a36a5f7a9 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | GraphicsVideoItem: Interpret ARGB32 as premultipliedVal Doroshchuk2018-10-051-4/+5
| | | | | | | | | | | | | | | | | | | | Do not convert ARG32 to premultiplied. Rather interpret it as premultiplied. Should be better even if SSE2 is disabled. Task-number: QTBUG-52114 Change-Id: Ic63f59dc8a940d6d73c618ef3a75b47a0950fff3 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | DirectShow: Fix typo which breaks cameraVal Doroshchuk2018-10-041-1/+1
| | | | | | | | | | Change-Id: Ib2f799024b91131d33b9247dec167cae3e6adde9 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Gstreamer: Emit stateChanged(StoppedState) when recording is finishedv5.12.0-beta1VaL Doroshchuk2018-09-282-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When stop is requested, the state becomes QMediaRecorder::StoppedState and stateChanged() is sent immediately, also the status is changed from QMediaRecorder::RecordingStatus to QMediaRecorder::FinalizingStatus. But since stopping is asynchronous QMediaRecorder::StoppedState is sent before recording has been fully finished. When EOS is received from gstreamer and recording has been fully stopped, the status will be changed from QMediaRecorder::FinalizingStatus to QMediaRecorder::LoadedStatus and only in this case. So fixed to send stateChanged(QMediaRecorder::StoppedState) right after LoadedStatus. Task-number: QTBUG-69402 Change-Id: Ic7429a4bfea6b1f443a105a0540737072ad42de2 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Android: implement QMediaPlayer::setPlaybackRate()Yoann Lopes2018-09-265-3/+110
| | | | | | | | | | | | | | | | Only possible on Android API level 23 or higher. Task-number: QTBUG-61115 Change-Id: I147575ed0a48f84d4208978a67e0856918e65b3d Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
* | imx: Fallback to copying data if mapping has not succeededVaL Doroshchuk2018-09-252-34/+41
| | | | | | | | | | | | | | | | | | | | | | | | Some formats or data might be unsupported and not possible to use them in glTexDirectVIVMap. If glTexDirectVIVMap returns an error then need to upload data to memory created by the driver using glTexDirectVIV. If at least one such error has occurred, all next video frames will be copied via glTexDirectVIV without trying to map again. Task-number: QTBUG-50927 Change-Id: I0715d4b244139b8d3f49d8bd2fc905f3fd55556c Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Gstreamer: Fix undeclared identifier QGstVideoRendererSink in 0.10 verVaL Doroshchuk2018-09-252-1/+2
| | | | | | | | | | | | Task-number: QTBUG-70465 Change-Id: I6af46cb8de0b40dc41aaa0b999faf68d102c7b48 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | DirectShow: Implement image capture settingsVal Doroshchuk2018-09-257-5/+213
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added camera image encoder control that 1. applies image encoder settings (resolution and codec) used to capture images 2. returns supported image codecs from QImageWriter::supportedImageFormats 3. returns supported resolutions Since DirectShow camera session uses QImage based on QVideoFrame image encoder control returns viewfinder supported resolutions. Not available if camera is not loaded. Setting resolution via encoder control causes viewfinder resolution to be ignored. Task-number: QTBUG-32743 Change-Id: I1de3ca9c6543937cb62f73cb64a81d23b0d5c4c9 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-09-252-14/+8
|\| | | | | | | Change-Id: I0f5e9ae8180fa3492ce9002b75932c448f2c2b55
| * Android: Fix crash when play() is called but state is not setVal Doroshchuk2018-09-241-1/+3
| | | | | | | | | | | | | | | | | | Change state to PlayingState only when media content has been provided. Task-number: QTBUG-70653 Task-number: QTBUG-68998 Change-Id: Iad8fc2c964ff22e90de6eb9b84c82a0950d0b1ac Reviewed-by: Christian Stromme <christian.stromme@qt.io>