diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-11-04 12:20:19 +0100 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2022-11-10 11:41:49 +0100 |
commit | 7c55a711cf5153d5b0a7e2318314cbe0c1e42361 (patch) | |
tree | fa0d649c52ecc2c7c859a2252413566bfa63bb40 /src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp | |
parent | 79267f7d3da56a4907d6ff9f2ddfdb2d296a47d1 (diff) |
Add parent-child relationship on audio sources and sinks
QAudioSink and QAudioSource must propagate their parents to
the platform specific implementation to enable correct operation
of the moveToThread function. Furthermore, all QObject elements
that are owned by audio sink/source must also establish
the parent-child relationship. This mainly affects QTimer's used
by the audio sink/sources.
Pick-to: 6.4
Fixes: QTBUG-108187
Change-Id: I476a97300a6fb1e0022b2a5570a3803be8fd0a88
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Diffstat (limited to 'src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp')
-rw-r--r-- | src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp index cf339d7d7..86a10da66 100644 --- a/src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp +++ b/src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp @@ -21,7 +21,7 @@ QT_BEGIN_NAMESPACE -QMaybe<QPlatformAudioSink *> QGStreamerAudioSink::create(const QAudioDevice &device) +QMaybe<QPlatformAudioSink *> QGStreamerAudioSink::create(const QAudioDevice &device, QObject *parent) { auto maybeAppSrc = QGstAppSrc::create(); if (!maybeAppSrc) @@ -35,12 +35,13 @@ QMaybe<QPlatformAudioSink *> QGStreamerAudioSink::create(const QAudioDevice &dev if (!volume) return errorMessageCannotFindElement("volume"); - return new QGStreamerAudioSink(device, maybeAppSrc.value(), audioconvert, volume); + return new QGStreamerAudioSink(device, maybeAppSrc.value(), audioconvert, volume, parent); } QGStreamerAudioSink::QGStreamerAudioSink(const QAudioDevice &device, QGstAppSrc *appsrc, - QGstElement audioconvert, QGstElement volume) - : m_device(device.id()), + QGstElement audioconvert, QGstElement volume, QObject *parent) + : QPlatformAudioSink(parent), + m_device(device.id()), gstPipeline("pipeline"), gstVolume(std::move(volume)), m_appSrc(appsrc) |