From 87e5579e527f95f67854ed4dac3ba2b370e5b415 Mon Sep 17 00:00:00 2001
From: Stephen Birarda <commit@birarda.com>
Date: Thu, 19 Dec 2013 15:51:14 -0800
Subject: [PATCH] reinstate delete for starved but started audio ring buffers

---
 assignment-client/src/audio/AudioMixerClientData.cpp | 9 ++++-----
 libraries/audio/src/AudioRingBuffer.h                | 2 ++
 2 files changed, 6 insertions(+), 5 deletions(-)

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&);