Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2daf331e authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android (Google) Code Review
Browse files

Merge "Bug 4364249 Play position is 0 after flushing AudioTrack"

parents d912ec64 22cb204c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+4 −1
Original line number Diff line number Diff line
@@ -259,6 +259,7 @@ status_t AudioTrack::set(
    mMarkerReached = false;
    mNewPosition = 0;
    mUpdatePeriod = 0;
    mFlushed = false;
    mFlags = flags;
    AudioSystem::acquireAudioSessionId(mSessionId);

@@ -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();
@@ -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()
@@ -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;
}