summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* wasapi: fix assertion failureHEADdevTim Blechmann4 hours1-0/+1
| | | | | | | | | | | We did not mark the wasapi sink as "stopped" in the error handler, causing an assertion failure in the stream destructor. Fixes: QTBUG-142480 Pick-to: 6.10 6.11 Change-Id: Ifd53bf1c36ce30173d552c9852a3d4f7d7a11987 Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QSoundEffect: protect setResolvedAudioDevice against nullptrTim Blechmann22 hours1-0/+1
| | | | | | | | | | | | | | | setResolvedAudioDevice will create a new player, if it owned a player before. This can lead to situations where the setting a new device after unsetting the sample can crash inside setResolvedAudioDevice due to a nullptr dereference. Clearing/unrefing the player when clearing sample will prevent this situation from happening. Fixes: QTBUG-142743 Pick-to: 6.10 6.11 Change-Id: Ifce32658ba77275d6e466798e99bc1c994721e0b Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* QVideoFrame: Fix calculation of UV line strideMikko Hallamaa25 hours2-6/+7
| | | | | | | | | | | | | | | | | | | | | | UV line stride in planar YUV and YV formats is calculated from overall frame size in bytes, frame height, and the known Y-plane stride. The overall size comes from bytesRequired in texture description, which aligned the U and V plane heights to the nearest even number. This caused an inaccuracy in the calculation for UV stride for resolutions where the U and V planes have odd heights. The increase of horizontal scaling in packed texture formats (fallback for YUV420p10) increased this error, and caused an extra pixel to be added to the stride. This patch replaces the alignment in bytesRequired of these formats, to align the sum of U and V plane heights instead, and re-enables previously failing tests. Pick-to: 6.11 6.10 6.8 Change-Id: I9c8912eeba4729b0117bdd7e87a76c43569cb87a Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QSoundEffectPrivateWithPlayer: exit early for unsupported formatsTim Blechmann26 hours2-7/+16
| | | | | | | | | | | If the sample format is not supported, we should inform the caller about it. Otherwise we may crash. Fixes: QTBUG-142694 Pick-to: 6.10 6.11 Change-Id: Id63735da02177472d6c63087f0dfbaa7c248f087 Reviewed-by: Vladimir Belyavsky <belyavskyv@gmail.com> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Handle AVFrame's with not-null hw frame context deleterArtem Dyomin27 hours2-7/+24
| | | | | | | | | | | | | | Some FFmpeg decoding implementations for specific graphic cards produces frames with non-null AVHWFramesContext::free. We should consider the case, specifically, save and call the original deleter. Fixes: QTBUG-142242 Pick-to: 6.11 6.10 6.8 Change-Id: I17ca8e337db08ffd9ec3dbcb12e00c25aa7c7bf2 Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Fix MediaPlayer autoPlay not working if already playing or pausedLars Sutterud2 days1-1/+1
| | | | | | | | | | | | | | | autoPlay only worked if changing source while stopped, because our call to QMediaPlayer::setSource inside QQuickMediaPlayer::qmlSetSource triggered a mediaStatusChanged, which in turn caused m_wasMediaLoaded to become true inside QQuickMediaPlayer::onMediaStatusChanged, before the new media was actually loaded. Fixes: QTBUG-138223 Pick-to: 6.11 6.10 Change-Id: Idf4515542cf4c964ee90f284af520ccc8589ba25 Reviewed-by: Bror Wetlesen Vedeld <bror.vedeld@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* MultimediaWidgets: cleanups & streamliningTim Blechmann6 days4-34/+14
| | | | | | | | | | | * remove unused forward declarations * remove unused includes * clean up include style Pick-to: 6.11 6.10 6.8 Change-Id: Ied02b763d647aa6e78c64705ffd76c46c370ab85 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io>
* QVideoWidget: clean up QVideoWidgetPrivateTim Blechmann6 days1-4/+1
| | | | | | | | | | * `createBackend` was declared, but not defined. * `aspectRatioMode` was unused * group all full-screen related members Pick-to: 6.8 6.10 6.11 Change-Id: Iad72bc9e69746f345cbcaab40703182f02e9b79e Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Darwin: Rename imports from 'AvFoundation' to 'AVFoundation'Nils Petter Skålerud6 days5-5/+5
| | | | | | | Fixes: QTBUG-142695 Pick-to: 6.11 6.10 6.8 Change-Id: I0d3ad3f5c0617127386e99754d9457b7a1df0665 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Mark the whole repo (minus examples) with QT_NO_URL_CAST_FROM_STRINGAhmad Samir6 days6-7/+7
| | | | | | | | | | | | | | | examples will be compiled with QT_NO_URL_CAST_FROM_STRING in a separate commit. Use QUrl::fromLocalFile() where it's obvious the path is a local file. Use QCOMPARE() instead of QVERIFY(a == b). Drive-by, use Qt string literals. Pick-to: 6.11 Change-Id: I2fa3e02ccdd36e66e135435e324f38ae61e0e201 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Doc: Fix QDoc linking errorsJerome Pasion7 days3-6/+8
| | | | | | | | Fixes: QTBUG-142503 Pick-to: 6.10 6.11 Change-Id: I056bee3d886062b7c6b937fa6cbf552cfc6d5c4e Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: David Boddie <david.boddie@qt.io>
* QWasmMediaRecorder: use QUrl::fromLocalFile() for local pathsAhmad Samir7 days1-1/+1
| | | | | | | | | | | The concatenated string is clearly a local file path. Amends e98bce0c5ff5afa609fdd8cde65a0405a77a4fa8. Pick-to: 6.11 6.10 6.8 6.5 Change-Id: I6bda2e778fa04fffb2463d4c8c4ee814ca0af53d Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Lorn Potter <lorn.potter@qt.io>
* QFFmpegAudioRenderer: Use bufferSize returned by Android audio sinkMikko Hallamaa8 days1-9/+0
| | | | | | | | | | | Reworking Android audio sinks to the new architecture also fixed buffer size returning 0, as it now returns our ringbuffer size. This patch removes the workaround for this in buffer loading time code. Pick-to: 6.11 Change-Id: Ica524cef3fd54cdab3374c5ae2ebb190ae2eca8e Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Doc: Add QtQmlCore module as a documentation dependencyDavid Boddie9 days1-1/+1
| | | | | | | | | | This enables links to permissions in the QtQmlCore module, such as CameraPermission. Pick-to: 6.11 Task-number: QTBUG-142503 Change-Id: I16619ddd46b0636b0e7edfb1de0a7be997270637 Reviewed-by: Jerome Pasion <jerome.pasion@qt.io>
* Add [[maybe_unused]] where applicableMikko Hallamaa12 days2-2/+3
| | | | | | | | This patch adds [[maybe_unused]] in cases where a variable is used only with specific configurations, operating systems etc. Change-Id: I8fbb12b09978c5a788b39d67044892d46b269346 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Audio: add new public APIs for callback-based Audio IOTim Blechmann13 days12-72/+573
| | | | | | | | | | | | | QAudioSink/QAudioSource gain a new `start` method that allow users to register a callback that will be called from the audio thread. This allows more fine-grained control over the Audio device. [ChangeLog] Added a callback-based audio IO for QAudioSink/QAudioSource via a new `start()` signature. Task-number: QTBUG-138267 Change-Id: I08c9aaf6357dd78b65bdbc07ac0d02ca15b989a1 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Revert "GStreamer: compile fix"Tim Blechmann14 days1-1/+1
| | | | | | | | | | | This reverts commit 1379c85ebf9b03f329619ac7d6afb2119d73d5c2. Reason for revert: Fixed in qtbase Change-Id: I950f0441838ef9a0d90139c982cc53e955d1e444 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Documentation: document limitation with x11 screencapturingBror Wetlesen Vedeld2025-12-021-0/+4
| | | | | | | | | | | | x11 screencapturing may depend on window managers Different window managers change the behavior of screencapturing. This different behavior should be documented as a limitation. Task-number: QTBUG-141727 Pick-to: 6.10 Change-Id: I52de3bc5c4417ea309f08b298d446f11e25469a7 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* build system: prototype use of precompiled headerTim Blechmann2025-12-022-1/+58
| | | | | | | | | QtMultimedia includes some heavy system headers, that could be precompiled Pick-to: 6.10 Change-Id: I8bc685b9203c398ddf0191fa2770374af9b71647 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* wasm: fix overconstrained errorLorn Potter2025-12-022-17/+14
| | | | | | | | | Do not set exact device when id is null string Pick-to: 6.10 Change-Id: I1f714f81c899cd9965c346205734d6be698db108 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* wasm: Allow source device stream to be readyLorn Potter2025-12-011-2/+1
| | | | | | | | | | Without this, we get Failed to construct 'VideoFrame': Invalid source state Pick-to: 6.10 Change-Id: I2e17008c46b64d12b80a648cb2fd0abe7386f048 Fixes: QTBUG-142140 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* wasm: Fix media stream going out of scopeLorn Potter2025-11-262-6/+4
| | | | | | | | | | | | We use the 'clone' method on the resolved stream object to raise the scope, as it was being destroyed when the scope of the promise resolve function went out of scope. Pick-to: 6.10 Change-Id: Ia13b2861a04897505a83070215a3528fcca89288 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* Audio: fix emitting of deprecated symbolTim Blechmann2025-11-251-1/+1
| | | | | | | | | | | | | | | QAudio::convertVolume was added to removed_api.cpp, but since the header used the wrong guarding macro, the symbol was not generated. QT_MULTIMEDIA_REMOVED_SINCE should have been used instead of QT_CORE_REMOVED_SINCE Pick-to: 6.10 Fixes: QTBUG-142166 Change-Id: I6a3c8d345942ee8d16f5619cda2d605bd128e4e9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: Lars Sutterud <lars.sutterud@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io>
* CMake: link public qt libraries when necessaryTim Blechmann2025-11-222-2/+5
| | | | | | | | | | | | | Linking the *Private libraries is good enough for propagating usage requirements, but not for propagating headers for precompilation. i.e. when only linking Qt::CorePrivate, <QtCore/QtCore> will not be precompiled. We therefore ensure to link both public and private libaries. Pick-to: 6.10 6.8 Change-Id: Ifd13bf057429e797ba0bd17f3c214fdbfeb50bc1 Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QQuickImagePreviewProvider: Add missing include for std::lock_guardMichael Weghorn2025-11-221-0/+2
| | | | | | | | | | | | | | | | This fixes the following build failure seen with a local -no-pch build: .../qt5/qtmultimedia/src/multimediaquick/qquickimagepreviewprovider.cpp:16:14: error: no member named 'lock_guard' in namespace 'std' 16 | std::lock_guard guard(mutex); | ~~~~~^ .../qt5/qtmultimedia/src/multimediaquick/qquickimagepreviewprovider.cpp:16:25: error: use of undeclared identifier 'guard' 16 | std::lock_guard guard(mutex); This amends d3508f485257a43ae4e91cb85dc608b0c9d20256. Change-Id: I2ee0354d6089f098a01d4f1625d1e94848016748 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QtAudio: deprecate QtAudio::UnderrunErrorTim Blechmann2025-11-204-7/+13
| | | | | | | | | | | | `QtAudio::UnderrunError` is equivalent with `QAudio::IdleState`. It has nothing to do with hardware xruns, which is a common misunderstanding. This patch deprecates this error code and removes its use from qnx and wasm backends. Change-Id: I2a1b44f4f27efe9d7aaf8267fd735c6a78358135 Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QFFmpegSurfaceCaptureGrabber: Convert timer to QChronoTimerMikko Hallamaa2025-11-181-2/+6
| | | | | | | | | This patch converts it to QChronoTimer which allows higher presicison with std::chrono::nanoseconds. Fixes: QTBUG-141821 Change-Id: I0873ff05a506bd59dffe155993aaaba4f2c3e1e5 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Replace QT_MM_ASSUME with Q_PRESUMETim Blechmann2025-11-186-39/+6
| | | | | | | | | Q_PRESUME is Q_ASSUME with c++23 semantics. We can use it instead of our own implementation Change-Id: I7d7b1e124a6eda25d63cb6a57782b3c070d93fda Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QRtAudioEngine: fix cleanup of retired voicesTim Blechmann2025-11-171-1/+1
| | | | | | | | | | We want to remove the retired voices, so we need to return the correct predicate. Pick-to: 6.10 Change-Id: I5e43d94a8562f4e04854b66ef003a3f11a6f8175 Reviewed-by: Tim Blechmann <tim.blechmann@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io>
* Enhance checking OpenGL rendering capabilitiesArtem Dyomin2025-11-171-2/+13
| | | | | | | | | | | If we render in non-ui thread, we have to check ThreadedOpenGL and PlatformOffscreenSurface qpa capabilities. Pick-to: 6.8 6.10 Fixes: QTBUG-135598 Task-number: QTBUG-131107 Change-Id: I24efa91a647e2927193ef4c623e51b691fa7d731 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Android: Set preferred MediaRecorder deviceMikko Hallamaa2025-11-172-9/+28
| | | | | | | | | | | | | | AndroidMediaRecorder depends on setting the preferred audio device of the MediaRecorder by calling the setAudioInput method which was removed in the fix to QTBUG-126028. This patch refactors QAndroidMediaCaptureSession to set the preferred audio device of the MediaRecorder directly, and then performs the device preparation introduced in the earlier patch. Pick-to: 6.10 6.8 Change-Id: I624da2b5557b71542f3c5228f9b56e44c969ce82 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* GStreamer: compile fixTim Blechmann2025-11-171-1/+1
| | | | | | Change-Id: I77a996e2469fdcbfacaee57cf3e2fbde66411afd Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* QRtAudioEngine: Give a notification role to our sinksAleix Pol2025-11-171-0/+3
| | | | | | | | | | | | | At the moment we'd get the stream classified as Music (which is the default) even though QRtAudioEngine seems to be used mostly for non-music purposes (i.e. sound effects). Declare it as such so the system isn't entirely verbose over these. This would mean processes using QtVirtualKeyboard get registered as Music players, which isn't intended. Pick-to: 6.10 Change-Id: I34c1f613b1e61c0b2674da16cf12a652e3a4ae8e Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* ffmpeg: remove redundant moveTim Blechmann2025-11-171-2/+1
| | | | | | | | | mingw/gcc-13 builds warn (with an error about a redundant move). Pick-to: 6.8 6.10 Change-Id: Iaf4048bc1e2a55825322f9ce18feee0e7009347d Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io> Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* Documentation: document X11-specific QWindowCapture limitationsBror Wetlesen Vedeld2025-11-161-0/+9
| | | | | | | | | | | | | X11 has two limitations when it comes to screenrecording. The first is when windows are partly off screen. The other is when windows are wholly off screen. Pick-to: 6.10 Fixes: QTBUG-141727 Change-Id: Ie8cd88b35b9289e14852f98a2feb727b222c4a5d Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
* X11 capture: detect unmapped windowsKaarle Ritvanen2025-11-141-0/+5
| | | | | | | | | | | A window may be minimized or located on a workspace that is not currently visible. On some window managers, such windows change their map_state and cannot be captured. The patch adds a more accurate error message and gets around unnecessary retries. Pick-to: 6.10 Change-Id: I5f423e956310c2e17d42cfb8e1381022cbc3ca62 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Audio: add PulseAudio server detection before starting PipewireTim Blechmann2025-11-133-2/+89
| | | | | | | | | | | | | | | | | Arch linux and derivatives allow users to install PipeWire and PulseAudio in parallel. This is problematic, as there is no good way to determine if PipeWire manages audio devices from PipeWire's API. This patch adds a rather ugly workaround to first try to connect to PulseAudio and detect if it's PipeWire's emulation. If we detect vanilla PulseAudio, we skip pipewire. Unfortunately this will increase the startup times by a few milliseconds. Fixes: QTBUG-141836 Fixes: QTBUG-140938 Pick-to: 6.10 Change-Id: I7cc1257212805c7413dba5a3ba9d9638e170df03 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* GStreamer: remove constexpr from QGstPipelineThiago Macieira2025-11-121-1/+1
| | | | | | | | | | | | | | | | | | It might have supported constexpr initialization, but the use of QUniqueHandle implied a load-time cost anyway to install the destructor atexit() time. And now QUniqueHandle no longer allows constexpr. qgstpipeline_p.h:34:15: error: explicitly defaulted function ‘constexpr QGstPipeline::QGstPipeline()’ cannot be declared ‘constexpr’ because the implicit declaration is not ‘constexpr’: qgst_p.h:805:7: note: defaulted constructor calls non-‘constexpr’ ‘QGstBin::QGstBin()’ qgst_p.h:556:7: note: defaulted constructor calls non-‘constexpr’ ‘QGstElement::QGstElement()’ qgst_p.h:381:7: note: defaulted constructor calls non-‘constexpr’ ‘QGstObject::QGstObject()’ qsharedhandle_p.h:102:5: note: defaulted constructor calls non-‘constexpr’ ‘QtPrivate::QSharedHandle<HandleTraits>::QSharedHandle() [with HandleTraits = QSharedGstObjectTraits]’ quniquehandle_p.h:196:14: note: defaulted constructor calls non-‘constexpr’ ‘QUniqueHandle<HandleTraits, Deleter>::QUniqueHandle(const Type&) [with typename std::enable_if<is_default_constructible_v<Deleter>, bool>::type <anonymous> = 1; HandleTraits = QtPrivate::UniqueHandleTraitsFromSharedHandleTraits<QSharedGstObjectTraits>; Deleter = QtUniqueHandleTraits::DefaultDeleter<QtPrivate::UniqueHandleTraitsFromSharedHandleTraits<QSharedGstObjectTraits> >; Type = GstObject*]’ Change-Id: I6c8153900d510dcc9309fffd827a5a9c03b0a97b Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* ThreadLocalRhi: Move preferred backend out of rhi holderMikko Hallamaa2025-11-121-11/+7
| | | | | | | | | | One should be able to set the preferred thread local QRhi backend before it's initialized, so this patch moves it out from being a member and as a static thread_local instead. Pick-to: 6.10 6.8 Change-Id: I548f9e772155ef99007529390198d90b13cc80f5 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* WASAPI: error handling QWindowsAudioDevice::open failuresTim Blechmann2025-11-122-0/+15
| | | | | | | | | | | QWindowsAudioDevice::open may fail. We need to detect this to prevent nullptr dereferences in openAudioClient. Fixes: QTBUG-141787 Pick-to: 6.10 6.10.1 Change-Id: I5eaa3c23aba976664a451b288064bf7d91e2b59b Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Mikko Hallamaa <mikko.hallamaa@qt.io>
* QQuickImagePreviewProvider: reduce contentionTim Blechmann2025-11-111-12/+15
| | | | | | | | we can move the image scaling out of the mutex. Change-Id: I85f56a56b7d011b7e5a0e7c179e042fdf21187fb Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* QQuickImageCapture - register preview image per instanceTim Blechmann2025-11-114-34/+74
| | | | | | | | | | | | | QQuickImagePreviewProvider only provided a single preview image. This will break when people use multiple instances in their applications. We now keep track of the QQuickImageCapture instances and keep on preview image per instance. This means that we also need to change the URI to take the instance ID into account. Change-Id: I85694dff67ff643564fcdd130839b047102c3382 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io>
* X11 window capture: retry loopKaarle Ritvanen2025-11-111-9/+17
| | | | | | | | | | Capturing may fail if the window geometry changes between the invocation of update and XShmGetImage. Retrying the operation a few times makes such failures improbable. Pick-to: 6.10 Change-Id: I6a46dc6e8463c41b5f8029a0e5de225e7fd76d90 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Android: Convert audio sample format to float if format unsupportedMikko Hallamaa2025-11-114-2/+21
| | | | | | | | | | | | | | | | | | We report supporting all sample formats Qt supports on Android, as we can do sample format conversion. AAudio supports formats except uint8, but in some cases other formats such as int32 can be unsupported by Android mixer. There seems to be no way to directly query this support, only what the audio device itself supports, which is not equivalent. This patch adds a fallback mechanism to perform sample format conversion to float if opening a stream with the original format fails, but opening it with float succeeds. Fixes: QTBUG-141852 Pick-to: 6.10 Change-Id: I0b0524ddd2712beeb3a7ecdd37928544610b4a4a Reviewed-by: Tim Blechmann <tim.blechmann@qt.io>
* WASAPI: simplify start return codeTim Blechmann2025-11-112-18/+4
| | | | | | | | The return code was unnecessarily complex. Pick-to: 6.10 Change-Id: I4ba158e4109be7e5db7a8fbabe5b5db72e94f34f Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* WASAPI: harden worker thread terminationTim Blechmann2025-11-114-7/+35
| | | | | | | | | | | | It seems that in certain condition, stopping the audio client will not cause the worker thread to wake up. In these cases we signal the win32 event handle explicitly in order to wake the worker thread. Fixes: QTBUG-141840 Task-number: QTBUG-141789 Pick-to: 6.10 6.10.1 6.8 Change-Id: I013e27365bb909fcf781b16d99d8e9649bea01df Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Doc: Add missing property docsPaul Wicking2025-11-061-0/+23
| | | | | | Task-number: QTBUG-140629 Change-Id: Ic4afee9319d8eff499e2f6d7a99cab128c7ed1e2 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Capture partially out-of-screen X11 windowsKaarle Ritvanen2025-11-061-15/+49
| | | | | | | | | | | - Update the capture size according to the visible window region, and capture only it. - Emit an error if the whole captured window is out-of-screen. Pick-to: 6.10 Task-number: QTBUG-141727 Change-Id: I6513839a451be25efca341a652f2f90db9a9ca05 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* Add private API for setting preferred static QRhi instance backendMikko Hallamaa2025-11-062-6/+35
| | | | | | | | | | | | | For testing purposes, it would be useful to specify a specific backend for thread local QRhi instances, even if another backend would be available, such as OpenGL instead of Metal. This patch adds private API as an environment variable to specify a QRhi backend to create when required as a static QRhi instance. Pick-to: 6.10 6.8 Change-Id: I6fb3aad4c76ce20b2c07348799a78c1129b1d807 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* gstreamer: silence unused variable warningTim Blechmann2025-11-051-0/+2
| | | | | | | | | `isEglfsQPA` is only used for egl/dmabuf, causing unused variable warnings in other configurations. Pick-to: 6.8 6.10 Change-Id: Idc55da3584c5613e8be005cc6dcd1c933e44b2b6 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>