diff options
author | Lev Zelenskiy <lev.zelenskiy@nokia.com> | 2012-06-26 12:45:58 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-27 08:11:59 +0200 |
commit | 23a81d62e78b1bf4156577a6b16a078034403303 (patch) | |
tree | 7f7a922d55313571ee16db7d069c86b1937a101d | |
parent | 4d6434598387feef5237dd45ea5ff8167f43cd0c (diff) | |
download | qtmultimedia-23a81d62e78b1bf4156577a6b16a078034403303.tar.gz |
Clean buffers before closing the input device.
Input device handle is invalid after waveInClose()
QTBUG-24119
Change-Id: I8276e56766684efd26b78dc019ff871ebac28408
Reviewed-by: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
-rw-r--r-- | src/multimedia/audio/qaudioinput_win32_p.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp index 836924afe..0af49e012 100644 --- a/src/multimedia/audio/qaudioinput_win32_p.cpp +++ b/src/multimedia/audio/qaudioinput_win32_p.cpp @@ -335,6 +335,13 @@ void QAudioInputPrivate::close() deviceState = QAudio::StoppedState; waveInReset(hWaveIn); + + mutex.lock(); + for (int i=0; i<waveFreeBlockCount; i++) + waveInUnprepareHeader(hWaveIn,&waveBlocks[i],sizeof(WAVEHDR)); + freeBlocks(waveBlocks); + mutex.unlock(); + waveInClose(hWaveIn); int count = 0; @@ -342,12 +349,6 @@ void QAudioInputPrivate::close() count++; Sleep(10); } - - mutex.lock(); - for(int i=0; i<waveFreeBlockCount; i++) - waveInUnprepareHeader(hWaveIn,&waveBlocks[i],sizeof(WAVEHDR)); - freeBlocks(waveBlocks); - mutex.unlock(); } int QAudioInputPrivate::bytesReady() const |