diff --git a/assignment-client/src/audio/AudioMixerClientData.cpp b/assignment-client/src/audio/AudioMixerClientData.cpp index 4827fbc918..fa171f252d 100644 --- a/assignment-client/src/audio/AudioMixerClientData.cpp +++ b/assignment-client/src/audio/AudioMixerClientData.cpp @@ -94,11 +94,10 @@ void AudioMixerClientData::pushBuffersAfterFrameSend() { audioBuffer->shiftReadPosition(NETWORK_BUFFER_LENGTH_SAMPLES_PER_CHANNEL); audioBuffer->setWillBeAddedToMix(false); - } else if (audioBuffer->isStarved()) { - // this was previously the kill for injected audio from a client - // fix when that is added back - // delete audioBuffer; - // _ringBuffers.erase(_ringBuffers.begin() + i); + } else if (audioBuffer->hasStarted() && audioBuffer->isStarved()) { + // this is an empty audio buffer that has starved, safe to delete + delete audioBuffer; + _ringBuffers.erase(_ringBuffers.begin() + i); } } } diff --git a/libraries/audio/src/AudioRingBuffer.h b/libraries/audio/src/AudioRingBuffer.h index 4860b47af2..0bcd127a2e 100644 --- a/libraries/audio/src/AudioRingBuffer.h +++ b/libraries/audio/src/AudioRingBuffer.h @@ -62,6 +62,8 @@ public: bool isStarved() const { return _isStarved; } void setIsStarved(bool isStarved) { _isStarved = isStarved; } + + bool hasStarted() const { return _hasStarted; } protected: // disallow copying of AudioRingBuffer objects AudioRingBuffer(const AudioRingBuffer&);