summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qaudiooutput.cpp
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2021-09-22 10:33:14 +0200
committerPiotr Srebrny <piotr.srebrny@qt.io>2021-09-29 16:28:30 +0000
commitb4879defbca4594854e5a8e730e1061e217a7b44 (patch)
tree866dc355efa8f6032abbee7c1b87912f577230ae /src/multimedia/audio/qaudiooutput.cpp
parent1d1c4dbf2aa81ff9fc9e386283791ca39deb227f (diff)
Disconnect QAudioOutput from capture session and player in destructor
The expected behavior of elements connected to the capture session and the player is to disconnect automatically when deleted. This patch adds this behavior to the QAudioOutput object. Additionally, this patch enables automatic handover of QAudioOutput between two capture sessions or a capture session and a player. Pick-to: 6.2 Change-Id: I75e5135c54bd11b33876db317cf306d9255f38ce Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/multimedia/audio/qaudiooutput.cpp')
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/multimedia/audio/qaudiooutput.cpp b/src/multimedia/audio/qaudiooutput.cpp
index 275050a51..209ed63ca 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -100,6 +100,7 @@ QAudioOutput::QAudioOutput(const QAudioDevice &device, QObject *parent)
QAudioOutput::~QAudioOutput()
{
+ setDisconnectFunction({});
delete d;
}
@@ -221,4 +222,18 @@ void QAudioOutput::setDevice(const QAudioDevice &device)
emit deviceChanged();
}
+/*!
+ \internal
+*/
+void QAudioOutput::setDisconnectFunction(std::function<void()> disconnectFunction)
+{
+ if (d->disconnectFunction) {
+ auto df = d->disconnectFunction;
+ d->disconnectFunction = {};
+ df();
+ }
+ d->disconnectFunction = std::move(disconnectFunction);
+}
+
+
#include "moc_qaudiooutput.cpp"