76c6248
--- src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp~
76c6248
+++ src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp
76c6248
@@ -36,6 +36,13 @@
76c6248
 
76c6248
 OutputQtMultimedia::~OutputQtMultimedia()
76c6248
 {
76c6248
+    if(m_output && m_control)
76c6248
+        QMetaObject::invokeMethod(m_control, "stop", Qt::QueuedConnection);
76c6248
+
76c6248
+    if(m_output)
76c6248
+        m_output->deleteLater();
76c6248
+    if(m_control)
76c6248
+        m_control->deleteLater();
76c6248
 }
76c6248
 
76c6248
 bool OutputQtMultimedia::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat format)
76c6248
@@ -104,9 +111,9 @@
76c6248
 
76c6248
     qDebug() << "OutputQtMultimedia: Using output device: " << device_info.deviceName();
76c6248
 
76c6248
-    m_output.reset(new QAudioOutput(device_info, qformat));
76c6248
+    m_output = new QAudioOutput(device_info, qformat);
76c6248
     m_buffer = m_output->start();
76c6248
-    m_control.reset(new OutputControl(m_output.data()));
76c6248
+    m_control = new OutputControl(m_output);
76c6248
 
76c6248
     configure(freq, map, format);
76c6248
     return true;
76c6248
@@ -140,12 +147,12 @@
76c6248
 
76c6248
 void OutputQtMultimedia::suspend()
76c6248
 {
76c6248
-    QMetaObject::invokeMethod(m_control.data(), "suspend", Qt::QueuedConnection);
76c6248
+    QMetaObject::invokeMethod(m_control, "suspend", Qt::QueuedConnection);
76c6248
 }
76c6248
 
76c6248
 void OutputQtMultimedia::resume()
76c6248
 {
76c6248
-    QMetaObject::invokeMethod(m_control.data(), "resume", Qt::QueuedConnection);
76c6248
+    QMetaObject::invokeMethod(m_control, "resume", Qt::QueuedConnection);
76c6248
 }
76c6248
 
76c6248
 OutputControl::OutputControl(QAudioOutput *o)
76c6248
@@ -162,3 +169,8 @@
76c6248
 {
76c6248
     m_output->resume();
76c6248
 }
76c6248
+
76c6248
+void OutputControl::stop()
76c6248
+{
76c6248
+    m_output->stop();
76c6248
+}
76c6248
76c6248
--- src/plugins/Output/qtmultimedia/outputqtmultimedia.h~
76c6248
+++ src/plugins/Output/qtmultimedia/outputqtmultimedia.h
76c6248
@@ -47,8 +47,8 @@
76c6248
     virtual void resume();
76c6248
 
76c6248
 private:
76c6248
-    QScopedPointer<QAudioOutput> m_output;
76c6248
-    QScopedPointer<OutputControl> m_control;
76c6248
+    QAudioOutput *m_output = nullptr;
76c6248
+    OutputControl *m_control = nullptr;
76c6248
     QIODevice *m_buffer;
76c6248
     qint64 m_bytes_per_second;
76c6248
 };
76c6248
@@ -63,6 +63,7 @@
76c6248
 public slots:
76c6248
     void suspend();
76c6248
     void resume();
76c6248
+    void stop();
76c6248
 
76c6248
 private:
76c6248
     QAudioOutput *m_output;