diff --git a/qmmp-1.2.4-qtmultimedia-timers.patch b/qmmp-1.2.4-qtmultimedia-timers.patch new file mode 100644 index 0000000..00a60b6 --- /dev/null +++ b/qmmp-1.2.4-qtmultimedia-timers.patch @@ -0,0 +1,74 @@ +--- src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp~ ++++ src/plugins/Output/qtmultimedia/outputqtmultimedia.cpp +@@ -36,6 +36,13 @@ + + 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) +@@ -104,9 +111,9 @@ + + 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; +@@ -140,12 +147,12 @@ + + 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) +@@ -162,3 +169,8 @@ + { + m_output->resume(); + } ++ ++void OutputControl::stop() ++{ ++ m_output->stop(); ++} + +--- src/plugins/Output/qtmultimedia/outputqtmultimedia.h~ ++++ src/plugins/Output/qtmultimedia/outputqtmultimedia.h +@@ -47,8 +47,8 @@ + virtual void resume(); + + private: +- QScopedPointer m_output; +- QScopedPointer m_control; ++ QAudioOutput *m_output = nullptr; ++ OutputControl *m_control = nullptr; + QIODevice *m_buffer; + qint64 m_bytes_per_second; + }; +@@ -63,6 +63,7 @@ + public slots: + void suspend(); + void resume(); ++ void stop(); + + private: + QAudioOutput *m_output;