diff options
author | Andy Hung <hunga@google.com> | 2014-10-17 20:42:31 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-17 20:42:31 +0000 |
commit | e0459eb091d98b944d9d1c9483a08f322aa60eda (patch) | |
tree | e7e0c6f9f6f4b61cdc99c986185943b5646ffe5c /media | |
parent | 95b6e531a68561e3381645c0998aa799ae70018e (diff) | |
parent | e9234f17dfbb192c96b122b9e0ce8cd9015d1589 (diff) | |
download | frameworks_av-e0459eb091d98b944d9d1c9483a08f322aa60eda.zip frameworks_av-e0459eb091d98b944d9d1c9483a08f322aa60eda.tar.gz frameworks_av-e0459eb091d98b944d9d1c9483a08f322aa60eda.tar.bz2 |
am e9234f17: Merge "Fix AudioTrack retrograde getPosition when restoring tracks" into lmp-dev
* commit 'e9234f17dfbb192c96b122b9e0ce8cd9015d1589':
Fix AudioTrack retrograde getPosition when restoring tracks
Diffstat (limited to 'media')
-rw-r--r-- | media/libmedia/AudioTrack.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 8e0704f..0a89fbb 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -464,7 +464,6 @@ status_t AudioTrack::start() if (previousState == STATE_STOPPED || previousState == STATE_FLUSHED) { // reset current position as seen by client to 0 mPosition = 0; - mReleased = 0; // For offloaded tracks, we don't know if the hardware counters are really zero here, // since the flush is asynchronous and stop may not fully drain. // We save the time when the track is started to later verify whether @@ -529,6 +528,7 @@ void AudioTrack::stop() mState = STATE_STOPPING; } else { mState = STATE_STOPPED; + mReleased = 0; } mProxy->interrupt(); @@ -585,6 +585,7 @@ void AudioTrack::flush_l() mRefreshRemaining = true; mState = STATE_FLUSHED; + mReleased = 0; if (isOffloaded_l()) { mProxy->interrupt(); } @@ -1625,6 +1626,7 @@ nsecs_t AudioTrack::processAudioBuffer() waitStreamEnd = mState == STATE_STOPPING; if (waitStreamEnd) { mState = STATE_STOPPED; + mReleased = 0; } } if (waitStreamEnd && status != DEAD_OBJECT) { @@ -1873,6 +1875,7 @@ status_t AudioTrack::restoreTrack_l(const char *from) if (result != NO_ERROR) { ALOGW("restoreTrack_l() failed status %d", result); mState = STATE_STOPPED; + mReleased = 0; } return result; |