summaryrefslogtreecommitdiffstats
path: root/src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2022-11-04 12:20:19 +0100
committerPiotr Srebrny <piotr.srebrny@qt.io>2022-11-10 11:41:49 +0100
commit7c55a711cf5153d5b0a7e2318314cbe0c1e42361 (patch)
treefa0d649c52ecc2c7c859a2252413566bfa63bb40 /src/plugins/multimedia/gstreamer/audio/qgstreameraudiosink.cpp
parent79267f7d3da56a4907d6ff9f2ddfdb2d296a47d1 (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.cpp9
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)