diff options
author | Glenn Kasten <gkasten@google.com> | 2012-08-01 09:40:18 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-08-01 10:46:10 -0700 |
commit | 44cda3a4e7ca3de0db9cb49145def3803b03ebb4 (patch) | |
tree | 2ed0b1d13971820bd5dcd80ece0f7ab05150e2a8 /services/audioflinger | |
parent | 3788a393bbcadebf38ac01ef9b2ecc46f07db011 (diff) | |
download | frameworks_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/audioflinger')
-rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 12 |
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; |