diff options
author | Eric Laurent <elaurent@google.com> | 2015-07-13 15:52:35 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-07-13 15:52:36 +0000 |
commit | 4b33e0838fdb1b5e545449add02005916b512c99 (patch) | |
tree | e38ce9db4984ec035c05ffa7832e2bad50fe2bd2 /services/audioflinger/Threads.cpp | |
parent | 9ad9e7471629f7b9061569a50555a1722047f38d (diff) | |
parent | 0f0631eb55b1f0a7f4b62212b78a3faa0b49919b (diff) | |
download | frameworks_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.cpp | 21 |
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; |