|
|
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;
|