summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-08-01 09:40:18 -0700
committerGlenn Kasten <gkasten@google.com>2012-08-01 10:46:10 -0700
commit44cda3a4e7ca3de0db9cb49145def3803b03ebb4 (patch)
tree2ed0b1d13971820bd5dcd80ece0f7ab05150e2a8 /services
parent3788a393bbcadebf38ac01ef9b2ecc46f07db011 (diff)
downloadframeworks_av-44cda3a4e7ca3de0db9cb49145def3803b03ebb4.zip
frameworks_av-44cda3a4e7ca3de0db9cb49145def3803b03ebb4.tar.gz
frameworks_av-44cda3a4e7ca3de0db9cb49145def3803b03ebb4.tar.bz2
Don't wait for presentation complete if terminated
Change-Id: Ia04cf6c620693457dca87b4ffea5dd0fe71efdce
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/AudioFlinger.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index a921ad6..d65a2b6 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -3181,7 +3181,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
}
//ALOGV("track %d u=%08x, s=%08x [NOT READY] on thread %p", name, cblk->user, cblk->server, this);
- if ((track->sharedBuffer() != 0) || track->isTerminated() ||
+ if ((track->sharedBuffer() != 0) ||
track->isStopped() || track->isPaused()) {
// We have consumed all the buffers of this track.
// Remove it from the list of active tracks.
@@ -3201,8 +3201,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
track->mUnderrunCount++;
// No buffers for this track. Give it a few chances to
// fill a buffer, then remove it from active list.
- if (--(track->mRetryCount) <= 0) {
- ALOGV("BUFFER TIMEOUT: remove(%d) from active list on thread %p", name, this);
+ if (--(track->mRetryCount) <= 0 || track->isTerminated()) {
+ ALOGV_IF(track->mRetryCount <= 0, "BUFFER TIMEOUT: remove(%d) from active list on thread %p", name, this);
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
@@ -3701,7 +3701,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
}
//ALOGV("track %d u=%08x, s=%08x [NOT READY]", track->name(), cblk->user, cblk->server);
- if ((track->sharedBuffer() != 0) || track->isTerminated() ||
+ if ((track->sharedBuffer() != 0) ||
track->isStopped() || track->isPaused()) {
// We have consumed all the buffers of this track.
// Remove it from the list of active tracks.
@@ -3719,8 +3719,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
} else {
// No buffers for this track. Give it a few chances to
// fill a buffer, then remove it from active list.
- if (--(track->mRetryCount) <= 0) {
- ALOGV("BUFFER TIMEOUT: remove(%d) from active list", track->name());
+ if (--(track->mRetryCount) <= 0 || track->isTerminated()) {
+ ALOGV_IF(track->mRetryCount <= 0, "BUFFER TIMEOUT: remove(%d) from active list", track->name());
trackToRemove = track;
} else {
mixerStatus = MIXER_TRACKS_ENABLED;