From d7ef86ae1072c3d5501f10c286b1300681a5518d Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 8 Jun 2016 21:45:52 -0400 Subject: [PATCH] =?UTF-8?q?On=20second=20thought,=20let=E2=80=99s=20not=20?= =?UTF-8?q?go=20to=20Camelot.=20=E2=80=98Tis=20a=20silly=20place.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/audio/AudioThread.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/audio/AudioThread.cpp b/src/audio/AudioThread.cpp index 7b18336..20193a7 100644 --- a/src/audio/AudioThread.cpp +++ b/src/audio/AudioThread.cpp @@ -84,16 +84,11 @@ static int audioCallback(void *outputBuffer, void * /* inputBuffer */, unsigned } srcmix->inputQueue->pop(srcmix->currentInput); if (srcmix->isTerminated()) { - if (srcmix->currentInput) { - srcmix->currentInput->decRefCount(); - } continue; } continue; } -// std::lock_guard < std::mutex > lock(srcmix->currentInput->m_mutex); - if (srcmix->currentInput->sampleRate != src->getSampleRate()) { while (srcmix->inputQueue->size()) { srcmix->inputQueue->pop(srcmix->currentInput); @@ -126,9 +121,6 @@ static int audioCallback(void *outputBuffer, void * /* inputBuffer */, unsigned } srcmix->inputQueue->pop(srcmix->currentInput); if (srcmix->isTerminated()) { - if (srcmix->currentInput) { - srcmix->currentInput->decRefCount(); - } continue; } } @@ -150,9 +142,6 @@ static int audioCallback(void *outputBuffer, void * /* inputBuffer */, unsigned } srcmix->inputQueue->pop(srcmix->currentInput); if (srcmix->isTerminated()) { - if (srcmix->currentInput) { - srcmix->currentInput->decRefCount(); - } break; } float srcPeak = srcmix->currentInput->peak * srcmix->gain; @@ -180,9 +169,6 @@ static int audioCallback(void *outputBuffer, void * /* inputBuffer */, unsigned } srcmix->inputQueue->pop(srcmix->currentInput); if (srcmix->isTerminated()) { - if (srcmix->currentInput) { - srcmix->currentInput->decRefCount(); - } break; } float srcPeak = srcmix->currentInput->peak * srcmix->gain; @@ -414,6 +400,11 @@ void AudioThread::run() { ref->decRefCount(); } } + + if (currentInput) { + currentInput->setRefCount(0); + currentInput = nullptr; + } if (deviceController[parameters.deviceId] != this) { deviceController[parameters.deviceId]->removeThread(this);