aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp20
-rw-r--r--src/plugins/Output/qtmultimedia/outputqtmultimedia.h5
2 files changed, 19 insertions, 6 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();
+}
diff --git a/src/plugins/Output/qtmultimedia/outputqtmultimedia.h b/src/plugins/Output/qtmultimedia/outputqtmultimedia.h
index 9eebf3793..6a1a4f413 100644
--- a/src/plugins/Output/qtmultimedia/outputqtmultimedia.h
+++ b/src/plugins/Output/qtmultimedia/outputqtmultimedia.h
@@ -47,8 +47,8 @@ public:
virtual void resume() override;
private:
- QScopedPointer<QAudioOutput> m_output;
- QScopedPointer<OutputControl> m_control;
+ QAudioOutput *m_output = nullptr;
+ OutputControl *m_control = nullptr;
QIODevice *m_buffer;
qint64 m_bytes_per_second;
};
@@ -63,6 +63,7 @@ public:
public slots:
void suspend();
void resume();
+ void stop();
private:
QAudioOutput *m_output;