summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2013-08-30 15:12:37 -0700
committerEric Laurent <elaurent@google.com>2013-08-30 15:12:37 -0700
commit6bf9ae20b3bd2dbb8f2e89ee167a6785222301cf (patch)
tree4075a75b4c805011df36d78b015edf6180d649df /services
parentd656a4be3c3b6bc249b06599c2b02c2863d2c47f (diff)
downloadframeworks_av-6bf9ae20b3bd2dbb8f2e89ee167a6785222301cf.zip
frameworks_av-6bf9ae20b3bd2dbb8f2e89ee167a6785222301cf.tar.gz
frameworks_av-6bf9ae20b3bd2dbb8f2e89ee167a6785222301cf.tar.bz2
audioflinger: offloaded tracks flush/pause order
Make sure that a flush received after a pause is forwarded to the HAL after the pause. Change-Id: Ib3221f70c59f8b3dbbac20b23104f6b779b75be0
Diffstat (limited to 'services')
-rw-r--r--services/audioflinger/Threads.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index bc01ede..3921b68 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -3810,10 +3810,6 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
size_t count = mActiveTracks.size();
mixer_state mixerStatus = MIXER_IDLE;
- if (mFlushPending) {
- flushHw_l();
- mFlushPending = false;
- }
// find out which tracks need to be processed
for (size_t i = 0; i < count; i++) {
sp<Track> t = mActiveTracks[i].promote();
@@ -3938,6 +3934,12 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
// compute volume for this track
processVolume_l(track, last);
}
+
+ if (mFlushPending) {
+ flushHw_l();
+ mFlushPending = false;
+ }
+
// remove all the tracks that need to be...
removeTracks_l(*tracksToRemove);