Mercurial > hg > svapp
diff audioio/AudioPortAudioTarget.cpp @ 71:a8acc7841d70 1.2-stable
* Merge r884 from trunk
author | Chris Cannam |
---|---|
date | Fri, 30 Nov 2007 17:36:14 +0000 |
parents | bf1a53489ccc |
children | 448ff6e34b99 22bf057ea151 |
line wrap: on
line diff
--- a/audioio/AudioPortAudioTarget.cpp Thu Nov 29 17:16:02 2007 +0000 +++ b/audioio/AudioPortAudioTarget.cpp Fri Nov 30 17:36:14 2007 +0000 @@ -29,7 +29,8 @@ m_stream(0), m_bufferSize(0), m_sampleRate(0), - m_latency(0) + m_latency(0), + m_done(false) { PaError err; @@ -105,17 +106,37 @@ AudioPortAudioTarget::~AudioPortAudioTarget() { + std::cerr << "AudioPortAudioTarget::~AudioPortAudioTarget()" << std::endl; + + shutdown(); + if (m_stream) { + + std::cerr << "closing stream" << std::endl; + PaError err; err = Pa_CloseStream(m_stream); if (err != paNoError) { std::cerr << "ERROR: AudioPortAudioTarget: Failed to close PortAudio stream: " << Pa_GetErrorText(err) << std::endl; } + + std::cerr << "terminating" << std::endl; + err = Pa_Terminate(); if (err != paNoError) { std::cerr << "ERROR: AudioPortAudioTarget: Failed to terminate PortAudio: " << Pa_GetErrorText(err) << std::endl; } } + + m_stream = 0; + + std::cerr << "AudioPortAudioTarget::~AudioPortAudioTarget() done" << std::endl; +} + +void +AudioPortAudioTarget::shutdown() +{ + m_done = true; } bool @@ -169,7 +190,7 @@ std::cout << "AudioPortAudioTarget::process(" << nframes << ")" << std::endl; #endif - if (!m_source) return 0; + if (!m_source || m_done) return 0; float *output = (float *)outputBuffer;