summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* wasapi: Initialize COM before useVal Doroshchuk2017-11-141-0/+23
| | | | | | | | | The COM library was not initialized on the calling thread before the COM library calls were made. Task-number: QTBUG-62598 Change-Id: Id6f4fc093a1ef72b6e0a3cd3a22c05cec7eaafa8 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix deadlock when a new url is set in loading stateVal Doroshchuk2017-11-101-3/+0
| | | | | | | | | | | | | | | Setting a new url while QMediaPlayer is in loading state can result in a deadlock between the GUI and worker thread. Because main thread is waiting when worker realeses m_graph but worker cleared all pending tasks and is waiting for new tasks from main thread. Task-number: QTBUG-53534 Change-Id: I296ecdf866c5d85efc7121d3e7936334d6b700fd Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Fix crash when an app is sent to background while capturing an imageVal Doroshchuk2017-11-101-3/+7
| | | | | | | | | | | Since the native notify* methods for QtCameraListener.java are executed on different thread, there is a potential for a race condition when the applicationStateChanged is received before the notify* signals, which leads to the camera being release before the slots are executed. Task-number: QTBUG-52366 Change-Id: Ifc82f3a75a7e88e4e76fac3edbf16bb9f138fde7 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Fix memory leak in CameraBinSessionVaL Doroshchuk2017-11-081-4/+11
| | | | | | | | Created GstElement objects m_cameraSrc and m_videoSrc should be unrefed. Task-number: QTBUG-53204 Change-Id: Ibbfd37d928fe87ea899549da7c12fa2386e214cc Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Gstreamer: Fix memory leak in QGstreamerAudioDecoderSessionVaL Doroshchuk2017-10-301-0/+1
| | | | | | | | | The memory in the GstMapInfo should be unmapped with gst_buffer_unmap() after usage. Task-number: QTBUG-62789 Change-Id: Iee080e597abc80aa28fd068e6f582a97987677e0 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Don't discard the surface format when creating a video nodeVaL Doroshchuk2017-10-271-1/+8
| | | | | | | | All relevant properties from the surface are now copied Task-number: QTBUG-53268 Change-Id: I7f18f0e6a623c8c7c5be68e912b298e0b4b130b7 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Switch the metadata code to the event APIJames McDonnell2017-10-236-85/+76
| | | | | | | | | | | | | | | | | | | | | | The switch is necessary because Multimedia for QNX 7.0.0 removes support for PPS based retrieval. PPS itself is deprecated in QNX 7.0.0. QNX 6.6.0 is also switched to using event notification since Multimedia for QNX 6.6.0 also supports it. There's a slight change in when metadata first becomes available because an event is used instead of file based retrieval. I think it's a necessary change because there isn't actually any guarantee that the metadata is complete at the time that the code used to request it and the code may have missed changes because it never read the information again. [ChangeLog][QNX] Switch to mmr_event_t based metadata retrieval. PPS based retrieval is not supported by Multimedia for QNX 7.0.0. Change-Id: I2b70f05422ee03d25ed2446a0e30b56b03dd82c8 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Android: Set the correct scan line for the video surface formatChristian Strømme2017-10-231-0/+1
| | | | | | | | | The default value for QVideoSurfaceFormat is TopToBottom, so we need to change it. Task-number: QTBUG-51213 Change-Id: I47826a60fbae57f3d30d358a9ab8f05b784aeebd Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Update plugins.qmltypes for 5.9Christian Stromme2017-10-201-7/+19
| | | | | Change-Id: I3969c6e91438b9e411b8e93a304c666c2c36bf21 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix license of .cpp files to LGPLKai Koehne2017-10-182-26/+50
| | | | | Change-Id: I389c8eae55f6bded71978f3d275db419b9d32a2e Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Fix outdated BSD license headerKai Koehne2017-10-181-3/+13
| | | | | Change-Id: I386d30a54819bae016cb50cf5892a5ac380288f9 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Fix outdated FDL license headerKai Koehne2017-10-1817-51/+51
| | | | | Change-Id: I9cd7043058352ba2aeded74f86d863fca29bd37d Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Fix loading remote m3u filesVaL Doroshchuk2017-10-091-1/+2
| | | | | | | | | Fixed a case where it was not possible to load remote m3u files as the parser would start, and fail, before the file was received. Task-number: QTBUG-62255 Change-Id: If730539dbfd25c9ef2ab97a05af3a50c685a304b Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* GStreamer: Fix V4L input queryVaL Doroshchuk2017-10-091-1/+2
| | | | | | | | | | | The last ioctl argument expect a pointer to an integer, not the integer value itself. Also, the ioctl call will return 0 on success, or ENOTTY if the input can't be select, both indicating that the device is a camera. Task-number: QTBUG-62245 Change-Id: Ifcf2d30b11ae204036b43daae664f917aaed83ed Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Fix memory leak in CameraBinImageCaptureChristian Strømme2017-09-291-1/+3
| | | | | | | | The element name needs to be released when we're done with it. Change-Id: I650671288bd143551188094b0d934e7da2028a2d Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Ask for camera permissionsOliver Wolff2017-09-262-119/+163
| | | | | | Task-number: QTBUG-63308 Change-Id: Ic66d5d50b026350cf03afc19c58fc7c93029a69a Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* winrt: Use QMutex instead of criticalSectionsOliver Wolff2017-09-253-33/+15
| | | | | | | | | | | | | | critical sections are really unpredictable when it comes to order of activation. It was possible that the loop in QWinRTAbstractVideoRendererControl's syncAndRender blocked its setBlitMode for up to 30 seconds on application start. During this time the camera screen just stayed black. The whole approach seems to work a lot better when QMutexes are used. Task-number: QTBUG-63015 Change-Id: Ib1b0fa1da35fe299896068146254e4cf1d9616fb Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* GStreamer: fix video output stopping when the main thread is blockedYoann Lopes2017-09-221-4/+2
| | | | | | | | | | | | | | | | | When a new frame is ready to be rendered, our gst sink waits until the frame is actually processed in the GUI thread, but never more than 300 ms. The time limit is there to avoid potential dead locks in specific situations. Before, if the wait would timeout, the sink would signal that there was an error rendering the frame, which would in turn put the pipeline in an error state and would stop processing any further frame. We now simply skip the frame if the GUI thread is blocked for too long and signal that everything went fine to the pipeline. This was already the logic in place for GStreamer 0.10 (see qvideosurfacegstsink.cpp). Task-number: QTBUG-60509 Change-Id: I5173a15340c0e2065bb2fb5ca3bc045ac84ba7e1 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Switch to mmr_event_t based monitoringJames McDonnell2017-09-219-233/+385
| | | | | | | | | | | | | | The switch is necessary because Multimedia for QNX 7.0.0 removes support for PPS based monitoring. PPS itself is deprecated in QNX 7.0.0. QNX 6.6.0 is also switched to mmr_event_t based monitoring since Multimedia for QNX 6.6.0 also supports that type of monitoring. [ChangeLog][QNX] Switch to mmr_event_t based monitoring. PPS based monitoring is not supported by Multimedia for QNX 7.0.0. Change-Id: Id3ce1d8895e8ce492ecdd49cbe88ef5f0d6b0194 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* ALSA: Fix regression in qalsaaudioinput.cppAlexandre Jousset2017-08-311-1/+1
| | | | | | | | | | | In QAlsaAudioInput::open(), one should check against the available audio inputs and not the audio outputs. Regression introduced in 5473621bde2be226f2f3687a80b4bfc93bbbe572. Task-number: QTBUG-62435 Change-Id: I5db0a092a98c17964c55c9358ea1010ca05e9d6f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* DirectShow: Copy the frame data when we get it before emittingAndy Shaw2017-08-166-16/+13
| | | | | | | | | | | Since the slot connected to the frameAvailable signal may be in another thread there is a bigger risk of it being invalid by the time the slot is invoked. Therefore we copy the data and emit with the copy to ensure that we don't lose the data. Task-number: QTBUG-61817 Change-Id: I2888661d8a7f97105a85f87b08cc9ec25f8ce8c7 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Doc: Fix wrong slashRainer Keller2017-07-071-1/+1
| | | | | Change-Id: I979c7d8d01b00689269a7969b628864ca5eab991 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* PulseAudio: fix a pthread_mutex crash in error pathBartosz Golaszewski2017-07-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | QSoundEffect (pulseaudio) uses a workaround for stability issues: although the pulseaudio mainloop mutex is recursive, it utilizes a separate lock counting. This is not the best solution, but it is a part of a larger set of changes which improved the stability in CI under heavy load. QSoundEffect always calls pa_threaded_mainloop_lock/unlock() from the same thread so the additional lock counting works in normal situation even though it doesn't use atomic types. However if pa_context_connect() fails, pa_threaded_mainloop_unlock() is called without regard to current lock count. This leads to random double-unlock aborts if pa_context_connect() fails more than once (e.g. after the reconnect scheduled from onContextFailed()). Fix this by always using the PulseDaemon wrappers around pa_threaded_mainloop_lock/unlock(). Task-number: QTBUG-61725 Change-Id: I41eb9a76892a6646fd5620ef8f686473b339464f Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* AVFoundation: Make AVFImageCaptureControl work without a previewTimur Pocheptsov2017-06-272-3/+5
| | | | | | | | | | | | We only need to wait for a new viewfinder frame if we have a videorenderer control. If there's no videorender control, then there's no preview set and we can therefore just save the capture image immediately. Task-number: QTBUG-60329 Change-Id: I9ba34919f7cd82258482507c65db6367e330e231 Reviewed-by: Christian Stromme <christian.stromme@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* AVFImageCaptureControl - do not block the capture's callbackTimur Pocheptsov2017-06-262-7/+23
| | | | | | | | | | | | | | | | | | It's possible to initiate an asynchronous image capture (via AVCaptureStillImageOutput object) and immediately stop AVCaptureSession. In this case image capture's callback can potentially block forever, waiting for a semaphore: (if) no new frames arrive after 'stop' (on whatever thread AVFoundation/GDC chooses), this semaphore is never released. To avoid this we try to acquire a semaphore with a (reasonable) timeout and report an error in case of failure. To make sure we are not leaking a semaphore and not creating a danling pointer, we use a QSharedPointer now. Task-number: QTBUG-61367 Change-Id: I208cd463f843bc807b53b23ac9651aab0382775a Reviewed-by: Christian Stromme <christian.stromme@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* DirectShow: Change parameter of qt_evr_pixelFormatFromD3DFormat() to DWORDFriedemann Kleint2017-06-203-3/+3
| | | | | | | | | | | | Fixes g++ warnings: ..\common\evr\evrhelpers.cpp: In function 'QVideoFrame::PixelFormat qt_evr_pixelFormatFromD3DFormat(D3DFORMAT)': ..\common\evr\evrhelpers.cpp:143:5: warning: case value '842094158' not in enumerated type 'D3DFORMAT {aka _D3DFORMAT}' [-Wswitch] case D3DFMT_NV12: ..\common\evr\evrhelpers.cpp:145:5: warning: case value '842094169' not in enumerated type 'D3DFORMAT {aka _D3DFORMAT}' [-Wswitch] case D3DFMT_YV12: Change-Id: I11869144b34d848bd68434d3a062852608518978 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* DirectShowPlayerService::doSetVideoProbe(): Break out of loopFriedemann Kleint2017-06-201-1/+2
| | | | | | | | | | | | | | Fix g++ 7.1 warning: player\directshowplayerservice.cpp:724:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation] if (SUCCEEDED(DirectShowUtils::connectFilters(m_graph, m_source, m_videoSampleGrabber->filter(), true))) player\directshowplayerservice.cpp:726:13: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if' break; Amends 8e4d966f4e5546787257de046d2c3af8a19214b4. Change-Id: I491e14e0116140d2ebb870441c2f048a2d7ddc31 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* DirectShow: Silence g++ warnings about missing initializers for AM_MEDIA_TYPEFriedemann Kleint2017-06-201-0/+10
| | | | | Change-Id: I9f764077d257dadfe1641e9bd446b6939c381173 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Fix goto bypassing variable initializationThiago Macieira2017-06-191-3/+1
| | | | | | | | Though it's a pointer. Task-number: QTBUG-60464 Change-Id: Ia3e896da908f42939148fffd14c660fd8da43aa2 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* Prevent m_runningCount from eventually overflowingAlbert Astals Cid2017-06-161-1/+1
| | | | | | | | | | | | When m_loopCount is Infinite (i.e. -1) m_runningCount would go from -2 and down, eventuall wrapping and reaching 0 and thus stopping. This is a theorical problem since even if we had a 1 second video it would take lots of years to trigger but i guess it's better than having the value of m_runningCount be unbounded Change-Id: I340ec2157ece3334e58ab4afd77c34b478a256e9 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* OpenSL ES: Fix crash caused by overcommitting device with dataMika Salmela2017-06-121-2/+5
| | | | | | | | | Sometimes m_format.bytesForDuration(delta) is larger than the QByteArray containing the data. Therefore select the minimum of these. Task-number: QTBUG-61085 Change-Id: I20a8ffb77095aecd2711f53d4c9fc7da7f9ae8e2 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Emit the StoppedState change after the file has finished writingAndy Shaw2017-05-233-6/+16
| | | | | | | | | | | Where possible, we should be emitting the stateChanged() signal to StoppedState when we know the file is no longer being written to. The finializing status can be used to indicate it is finishing and when it is actually finished then StoppedState should be used. Task-number: QTBUG-50588 Change-Id: Ie3ac1c5cd00a6a36978e72b5485622e3302054ce Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* Fix build for -no-feature-temporaryfileStephan Binner2017-05-081-0/+4
| | | | | | | | | If a backend does not support streaming then playing from qrc is impossible for -no-feature-temporaryfile case. Change-Id: Ibb0518c4afe0598c6f3a1c03b75cc00e76b8eead Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* de-duplicate gstreamer_encodingprofiles configure testsOswald Buddenhagen2017-05-081-9/+3
| | | | | | | take advantage of the system now supporting 'use' by exported name. Change-Id: I7879d4c2e31b279bbbe17916e805ee60c108351d Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* DirectShow: Expose the camera control interfacev5.9.0-beta4Christian Stromme2017-05-032-0/+22
| | | | | | | The interface is needed to implement Qt's camera control classes. Change-Id: I468527dd1f5e9e7a0f8868f0b7addc3c069adf54 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* DirectShow: Merge the helpers and common folderChristian Strømme2017-05-0322-25/+19
| | | | | Change-Id: Ie1c39c26ae6dec288daafb24b5aa0b6cc2bdd218 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* DirectShow: Enable audio and video probes in DirectShowChristian Strømme2017-05-033-17/+381
| | | | | | | | | | | | This change enables the video and audio probe functionality, so it can be used with the media player. [ChangeLog][DirectShow] Added support for audio and video probes in the mediaplayer. Task-number: QTBUG-56415 Change-Id: If6f36a693b1d22372eab130df07d435c9df5a796 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Fix licensingJani Heikkinen2017-05-037-98/+140
| | | | | | | | | - Remove unused license files - Switch old LGPLv21 license headers with LGPL one Task-number: QTBUG-57147 Change-Id: If939b9a09e0cd5ccda7f12172363cbc8f78297e8 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
* Android: Fix crash caused by stale video-frame objectsChristian Strømme2017-04-272-18/+36
| | | | | | | | | | Make sure that the frame being processed is still valid, that is, the size is valid and correct, and that the frame buffer is accessible. Task-number: QTBUG-60115 Change-Id: Ic64b6f7d45d92b7923d97d6ecdc630da31abee17 Reviewed-by: Michael Dippold <mike@dippold.com> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* AVF: Fix mediaplayer state and status issuesChristian Strømme2017-04-263-52/+90
| | | | | | | | | This fixes the issues that were causing the whole qmediaplayerbackend test to be blacklisted on macOS. Task-number: QTBUG-46368 Change-Id: I59a35dd50a9c07e4e4382c5facb391f5c8a27ee7 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* DirectShow: Fix namespaced build with MinGWFriedemann Kleint2017-04-2639-37/+136
| | | | | | | | | | | | | | | | | | | | | | Remove QT_USE_NAMESPACE from headers and enclose headers/sources in QT_BEGIN/END_NAMESPACE. Fixes MinGW build error: qtbase/src/corelib/global/qtypeinfo.h:246:7: error: specialization of 'template<class T> class tn::QTypeInfo' in different namespace [-fpermissive] class QTypeInfo<TYPE > \ ^ qtbase/src/corelib/global/qtypeinfo.h:265:1: note: in expansion of macro 'Q_DECLARE_TYPEINFO_BODY' Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS) ^ helpers\directshowmediatype.h:92:1: note: in expansion of macro 'Q_DECLARE_TYPEINFO' Q_DECLARE_TYPEINFO(DirectShowMediaType, Q_MOVABLE_TYPE); ^ qtbase/src/corelib/global/qtypeinfo.h:57:7: error: from definition of 'template<class T> class tn::QTypeInfo' [-fpermissive] class QTypeInfo ^ Task-number: QTBUG-60118 Change-Id: Idfe7a49b50a0046a5cb17630a3ec99615ec6150a Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* DirectShow: Fix uninitialized memory read in DirectShowMediaTypeEnum::Next()Friedemann Kleint2017-04-253-1/+7
| | | | | | | | | | | | | Newly allocated memory was passed to DirectShowMediaType::copy(), which calls DirectShowMediaType::clear() on the target, which crashes when trying to release a COM pointer. Split out a DirectShowMediaType::copyToUninitialized() helper function which does not call clear() for this purpose. Task-number: QTBUG-59515 Change-Id: I2801f4ba2c8da618ff8a1c57c4cea215fff292b4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Android: Run-time permission checks for cameraChristian Strømme2017-04-233-1/+16
| | | | | | | | | | | | | | | The camera should ask for permission before being used. Normally this should be handle by the user, which can provide proper reasons for why the camera is used. To verify that we are allowed to open the camera, and as a good default, we'll check the permission and request access if needed. [ChangeLog][Android] Added run-time permission checks for accessing the camera. Task-number: QTBUG-55992 Change-Id: Ifb4e176728aab3076fdba292e17e17d33b1260a2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Android: Fix camera preview orientationChristian Strømme2017-04-203-0/+19
| | | | | | | | | | | | Before API level 24 the display orientation (the preview) was always set to 0. On newer versions of Android the clockwise rotation is set to be either 0 or 180, depending on the hardware. Since we don't want Android to apply transformation on our surface, we'll just enforce that the display orientation is always set to 0. Task-number: QTBUG-56536 Change-Id: Ie1aacda97540d5c97e6cbd8edb2afc53e7041e1e Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Merge remote-tracking branch 'origin/5.8' into 5.9Liang Qi2017-04-1812-5/+278
|\ | | | | | | Change-Id: I7cd203eec77f3b5689c14b81b0862c5b70bab1a6
| * OpenSL ES: Added run-time permission checks for recording on Android5.8Christian Strømme2017-03-301-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | Make sure that we have permission to record before starting a recording session. [ChangeLog][OpenSL ES][Android] Added run-time permission checks for recording on Android. Task-number: QTBUG-55992 Change-Id: Iab7416384336975fdf4de8024f02ab2414033163 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| * Android: Add run-time permission check for recordingChristian Strømme2017-03-303-0/+16
| | | | | | | | | | | | | | | | | | | | | | Check and request permission to record audio if needed. [ChangeLog][Android] Added run-time permission checks for media-recording. Task-number: QTBUG-55992 Change-Id: I781e5a5447f1ad03c069b2171637525ae9108d78 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| * GStreamer: improve the list of default recording formatsYoann Lopes2017-03-301-3/+32
| | | | | | | | | | | | | | | | Add some common codec combinations such as MP4/H.264/AAC or with alternative audio codecs such as MP3 or AC-3. Change-Id: If67c68112d0f170a1391bef750e2bc8fc0d246de Reviewed-by: Christian Stromme <christian.stromme@qt.io>
| * GStreamer: Fix position value at EndOfMediaChristian Strømme2017-03-291-0/+3
| | | | | | | | | | | | | | | | Return the duration when we're at the EndOfMedia Task-number: QTBUG-59604 Change-Id: If057257a65d73aa456dd7dc52b6cb624dd4712d3 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
| * Android: Add convenience method for checking and requesting permissionsChristian Strømme2017-03-222-0/+31
| | | | | | | | | | | | | | | | This will be used to check and request permissions at run-time. Task-number: QTBUG-55992 Change-Id: I344859aeb05fecf09ac46064e9452787d615a8a1 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>