aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-08-23 15:05:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2019-08-23 15:05:35 +0000
commit3df74e7743602080ddbfa534eb6bf5e3433867f6 (patch)
tree1d314ef81039995bee872b25b235fd0d7fddd1c7 /src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
parentae294cd46897a0b88b62823641a2e1b31cdd542b (diff)
downloadqmmp-3df74e7743602080ddbfa534eb6bf5e3433867f6.tar.gz
qmmp-3df74e7743602080ddbfa534eb6bf5e3433867f6.tar.bz2
qmmp-3df74e7743602080ddbfa534eb6bf5e3433867f6.zip
qtmultimedia: fixed crash (#1011)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9044 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp')
-rw-r--r--src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp b/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
index b6b534051..9bd738e01 100644
--- a/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
+++ b/src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
@@ -35,6 +35,13 @@ OutputQtMultimedia::OutputQtMultimedia() : Output(), m_buffer(nullptr), m_bytes_
OutputQtMultimedia::~OutputQtMultimedia()
{
+ if(m_output && m_control)
+ QMetaObject::invokeMethod(m_control, "stop", Qt::QueuedConnection);
+
+ if(m_output)
+ m_output->deleteLater();
+ if(m_control)
+ m_control->deleteLater();
}
bool OutputQtMultimedia::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)
@@ -103,9 +110,9 @@ bool OutputQtMultimedia::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFor
qDebug() << "OutputQtMultimedia: Using output device: " << device_info.deviceName();
- m_output.reset(new QAudioOutput(device_info, qformat));
+ m_output = new QAudioOutput(device_info, qformat);
m_buffer = m_output->start();
- m_control.reset(new OutputControl(m_output.data()));
+ m_control = new OutputControl(m_output);
configure(freq, map, format);
return true;
@@ -139,12 +146,12 @@ void OutputQtMultimedia::reset()
void OutputQtMultimedia::suspend()
{
- QMetaObject::invokeMethod(m_control.data(), "suspend", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(m_control, "suspend", Qt::QueuedConnection);
}
void OutputQtMultimedia::resume()
{
- QMetaObject::invokeMethod(m_control.data(), "resume", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(m_control, "resume", Qt::QueuedConnection);
}
OutputControl::OutputControl(QAudioOutput *o)
@@ -161,3 +168,8 @@ void OutputControl::resume()
{
m_output->resume();
}
+
+void OutputControl::stop()
+{
+ m_output->stop();
+}