Loading include/media/AudioTrack.h +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ private: bool mMarkerReached; uint32_t mNewPosition; uint32_t mUpdatePeriod; bool mFlushed; // FIXME will be made obsolete by making flush() synchronous uint32_t mFlags; int mSessionId; int mAuxEffectId; Loading media/libmedia/AudioTrack.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -259,6 +259,7 @@ status_t AudioTrack::set( mMarkerReached = false; mNewPosition = 0; mUpdatePeriod = 0; mFlushed = false; mFlags = flags; AudioSystem::acquireAudioSessionId(mSessionId); Loading Loading @@ -337,6 +338,7 @@ void AudioTrack::start() audio_track_cblk_t* cblk = mCblk; if (mActive == 0) { mFlushed = false; mActive = 1; mNewPosition = cblk->server + mUpdatePeriod; cblk->lock.lock(); Loading Loading @@ -437,6 +439,7 @@ void AudioTrack::flush_l() mUpdatePeriod = 0; if (!mActive) { mFlushed = true; mAudioTrack->flush(); // Release AudioTrack callback thread in case it was waiting for new buffers // in AudioTrack::obtainBuffer() Loading Loading @@ -655,7 +658,7 @@ status_t AudioTrack::getPosition(uint32_t *position) { if (position == 0) return BAD_VALUE; AutoMutex lock(mLock); *position = mCblk->server; *position = mFlushed ? 0 : mCblk->server; return NO_ERROR; } Loading Loading
include/media/AudioTrack.h +1 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,7 @@ private: bool mMarkerReached; uint32_t mNewPosition; uint32_t mUpdatePeriod; bool mFlushed; // FIXME will be made obsolete by making flush() synchronous uint32_t mFlags; int mSessionId; int mAuxEffectId; Loading
media/libmedia/AudioTrack.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -259,6 +259,7 @@ status_t AudioTrack::set( mMarkerReached = false; mNewPosition = 0; mUpdatePeriod = 0; mFlushed = false; mFlags = flags; AudioSystem::acquireAudioSessionId(mSessionId); Loading Loading @@ -337,6 +338,7 @@ void AudioTrack::start() audio_track_cblk_t* cblk = mCblk; if (mActive == 0) { mFlushed = false; mActive = 1; mNewPosition = cblk->server + mUpdatePeriod; cblk->lock.lock(); Loading Loading @@ -437,6 +439,7 @@ void AudioTrack::flush_l() mUpdatePeriod = 0; if (!mActive) { mFlushed = true; mAudioTrack->flush(); // Release AudioTrack callback thread in case it was waiting for new buffers // in AudioTrack::obtainBuffer() Loading Loading @@ -655,7 +658,7 @@ status_t AudioTrack::getPosition(uint32_t *position) { if (position == 0) return BAD_VALUE; AutoMutex lock(mLock); *position = mCblk->server; *position = mFlushed ? 0 : mCblk->server; return NO_ERROR; } Loading