diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-22 10:33:14 +0200 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-29 16:28:30 +0000 |
commit | b4879defbca4594854e5a8e730e1061e217a7b44 (patch) | |
tree | 866dc355efa8f6032abbee7c1b87912f577230ae /src/multimedia/audio/qaudiooutput.cpp | |
parent | 1d1c4dbf2aa81ff9fc9e386283791ca39deb227f (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.cpp | 15 |
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" |