summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/Threads.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-07-13 15:52:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-07-13 15:52:36 +0000
commit4b33e0838fdb1b5e545449add02005916b512c99 (patch)
treee38ce9db4984ec035c05ffa7832e2bad50fe2bd2 /services/audioflinger/Threads.cpp
parent9ad9e7471629f7b9061569a50555a1722047f38d (diff)
parent0f0631eb55b1f0a7f4b62212b78a3faa0b49919b (diff)
downloadframeworks_av-4b33e0838fdb1b5e545449add02005916b512c99.zip
frameworks_av-4b33e0838fdb1b5e545449add02005916b512c99.tar.gz
frameworks_av-4b33e0838fdb1b5e545449add02005916b512c99.tar.bz2
Merge "audioflinger: flush HAL when transitioning to next direct track" into mnc-dev
Diffstat (limited to 'services/audioflinger/Threads.cpp')
-rw-r--r--services/audioflinger/Threads.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp
index 0880c5d..d9f1a83 100644
--- a/services/audioflinger/Threads.cpp
+++ b/services/audioflinger/Threads.cpp
@@ -4487,9 +4487,16 @@ void AudioFlinger::DirectOutputThread::onAddNewTrack_l()
sp<Track> previousTrack = mPreviousTrack.promote();
sp<Track> latestTrack = mLatestActiveTrack.promote();
- if (previousTrack != 0 && latestTrack != 0 &&
- (previousTrack->sessionId() != latestTrack->sessionId())) {
- mFlushPending = true;
+ if (previousTrack != 0 && latestTrack != 0) {
+ if (mType == DIRECT) {
+ if (previousTrack.get() != latestTrack.get()) {
+ mFlushPending = true;
+ }
+ } else /* mType == OFFLOAD */ {
+ if (previousTrack->sessionId() != latestTrack->sessionId()) {
+ mFlushPending = true;
+ }
+ }
}
PlaybackThread::onAddNewTrack_l();
}
@@ -4582,12 +4589,8 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep
if (track != previousTrack.get()) {
// Flush any data still being written from last track
mBytesRemaining = 0;
- // flush data already sent if changing audio session as audio
- // comes from a different source. Also invalidate previous track to force a
- // seek when resuming.
- if (previousTrack->sessionId() != track->sessionId()) {
- previousTrack->invalidate();
- }
+ // Invalidate previous track to force a seek when resuming.
+ previousTrack->invalidate();
}
}
mPreviousTrack = track;