AudioOutput: fixed core dump on program exit

pull/27/head
f4exb 2016-10-08 06:54:49 +02:00
rodzic 6f054a51d8
commit bb541e9fb2
3 zmienionych plików z 9 dodań i 1 usunięć

Wyświetl plik

@ -26,6 +26,7 @@ AudioOutput::AudioOutput() :
m_mutex(),
m_audioOutput(0),
m_audioUsageCount(0),
m_onExit(false),
m_audioFifos()
{
}
@ -124,7 +125,10 @@ void AudioOutput::stop()
if (m_audioUsageCount == 0)
{
QIODevice::close();
delete m_audioOutput;
if (!m_onExit) {
delete m_audioOutput;
}
}
}
}

Wyświetl plik

@ -41,11 +41,13 @@ public:
void removeFifo(AudioFifo* audioFifo);
uint getRate() const { return m_audioFormat.sampleRate(); }
void setOnExit(bool onExit) { m_onExit = onExit; }
private:
QMutex m_mutex;
QAudioOutput* m_audioOutput;
uint m_audioUsageCount;
bool m_onExit;
typedef std::list<AudioFifo*> AudioFifos;
AudioFifos m_audioFifos;

Wyświetl plik

@ -28,6 +28,8 @@ DSPEngine::DSPEngine() :
DSPEngine::~DSPEngine()
{
m_audioOutput.setOnExit(true);
std::vector<DSPDeviceSourceEngine*>::iterator it = m_deviceEngines.begin();
while (it != m_deviceEngines.end())