summaryrefslogtreecommitdiffstats
path: root/services/audioflinger
diff options
context:
space:
mode:
authorPhil Burk <philburk@google.com>2014-12-11 16:11:49 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-11 16:11:49 +0000
commit2592184c976ef83aa9fdad7d63bfdb408c95aa7d (patch)
tree044c942ccc4dbe4b51dbc3312af4dc22923650b9 /services/audioflinger
parentb6ac4d49e468e155aa1591f3c400e1c06442e7b1 (diff)
parent6baa8fe747621b7121ff18dcdfab15d99c349c15 (diff)
downloadframeworks_av-2592184c976ef83aa9fdad7d63bfdb408c95aa7d.zip
frameworks_av-2592184c976ef83aa9fdad7d63bfdb408c95aa7d.tar.gz
frameworks_av-2592184c976ef83aa9fdad7d63bfdb408c95aa7d.tar.bz2
am 6baa8fe7: am 94a92c69: Merge "[audio][audioflinger] Consume all frames when a DirectThread is done." into lmp-mr1-dev
* commit '6baa8fe747621b7121ff18dcdfab15d99c349c15': [audio][audioflinger] Consume all frames when a DirectThread is done.
Diffstat (limited to 'services/audioflinger')
-rw-r--r--services/audioflinger/Threads.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index a6a4137..b20b238 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -4009,9 +4009,14 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
bool last = l.get() == track;
// The first time a track is added we wait
- // for all its buffers to be filled before processing it
+ // for all its buffers to be filled before processing it.
+ // Allow draining the buffer in case the client
+ // app does not call stop() and relies on underrun to stop:
+ // hence the test on (track->mRetryCount > 1).
+ // If retryCount<=1 then track is about to underrun and be removed.
uint32_t minFrames;
- if ((track->sharedBuffer() == 0) && !track->isStopping_1() && !track->isPausing()) {
+ if ((track->sharedBuffer() == 0) && !track->isStopping_1() && !track->isPausing()
+ && (track->mRetryCount > 1)) {
minFrames = mNormalFrameCount;
} else {
minFrames = 1;