From 5f4e3528c2d8236a8abb2f800c43d200052034a4 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 12 Feb 2015 11:29:55 -0800 Subject: [PATCH] override seek to handle warning once stopped --- libraries/audio-client/src/AudioClient.cpp | 2 +- libraries/audio/src/AudioInjectorLocalBuffer.cpp | 9 +++++++++ libraries/audio/src/AudioInjectorLocalBuffer.h | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index a16b0e1779..1919f2bbe5 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -982,6 +982,7 @@ bool AudioClient::outputLocalInjector(bool isStereo, qreal volume, AudioInjector localOutput->moveToThread(injector->getLocalBuffer()->thread()); // have it be stopped when that local buffer is about to close + connect(injector->getLocalBuffer(), &AudioInjectorLocalBuffer::bufferEmpty, localOutput, &QAudioOutput::stop); connect(injector->getLocalBuffer(), &QIODevice::aboutToClose, localOutput, &QAudioOutput::stop); qDebug() << "Starting QAudioOutput for local injector" << localOutput; @@ -993,7 +994,6 @@ bool AudioClient::outputLocalInjector(bool isStereo, qreal volume, AudioInjector return false; } - void AudioClient::outputFormatChanged() { int outputFormatChannelCountTimesSampleRate = _outputFormat.channelCount() * _outputFormat.sampleRate(); _outputFrameSize = AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * outputFormatChannelCountTimesSampleRate / _desiredOutputFormat.sampleRate(); diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.cpp b/libraries/audio/src/AudioInjectorLocalBuffer.cpp index a58d686498..6cbe56adb7 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.cpp +++ b/libraries/audio/src/AudioInjectorLocalBuffer.cpp @@ -23,9 +23,18 @@ AudioInjectorLocalBuffer::AudioInjectorLocalBuffer(const QByteArray& rawAudioArr void AudioInjectorLocalBuffer::stop() { _isStopped = true; + QIODevice::close(); } +bool AudioInjectorLocalBuffer::seek(qint64 pos) { + if (_isStopped) { + return false; + } else { + return QIODevice::seek(pos); + } +} + qint64 AudioInjectorLocalBuffer::readData(char* data, qint64 maxSize) { if (!_isStopped) { diff --git a/libraries/audio/src/AudioInjectorLocalBuffer.h b/libraries/audio/src/AudioInjectorLocalBuffer.h index 399c7515ec..ce41052730 100644 --- a/libraries/audio/src/AudioInjectorLocalBuffer.h +++ b/libraries/audio/src/AudioInjectorLocalBuffer.h @@ -21,6 +21,8 @@ public: void stop(); + bool seek(qint64 pos); + qint64 readData(char* data, qint64 maxSize); qint64 writeData(const char* data, qint64 maxSize) { return 0; }