diff options
author | Eric Laurent <elaurent@google.com> | 2013-11-06 17:29:58 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-11-06 17:29:58 +0000 |
commit | 48b6cd98b23b2cf9dee88f075f7575ecb5aaf545 (patch) | |
tree | 9dcac8d6cbf72c9cd29a6d64d9b66295c8c67c3c | |
parent | f8a1169d98a09d1473f289c363353d08301576f6 (diff) | |
parent | a23f17ac334ff20a11ee63dd177cb1080e44c483 (diff) | |
download | frameworks_av-48b6cd98b23b2cf9dee88f075f7575ecb5aaf545.zip frameworks_av-48b6cd98b23b2cf9dee88f075f7575ecb5aaf545.tar.gz frameworks_av-48b6cd98b23b2cf9dee88f075f7575ecb5aaf545.tar.bz2 |
Merge "audioflinger: fix direct output underrun" into klp-dev
-rw-r--r-- | services/audioflinger/Threads.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index b81183c..ba8195e 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -3673,6 +3673,9 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep if (--(track->mRetryCount) <= 0) { ALOGV("BUFFER TIMEOUT: remove(%d) from active list", track->name()); tracksToRemove->add(track); + // indicate to client process that the track was disabled because of underrun; + // it will then automatically call start() when data is available + android_atomic_or(CBLK_DISABLED, &cblk->mFlags); } else if (last) { mixerStatus = MIXER_TRACKS_ENABLED; } @@ -4094,6 +4097,9 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr ALOGV("OffloadThread: BUFFER TIMEOUT: remove(%d) from active list", track->name()); tracksToRemove->add(track); + // indicate to client process that the track was disabled because of underrun; + // it will then automatically call start() when data is available + android_atomic_or(CBLK_DISABLED, &cblk->mFlags); } else if (last){ mixerStatus = MIXER_TRACKS_ENABLED; } |