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

Commit f74f213c authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "AudioFlinger: Offload track transition fix"

parents d9a47839 4c6a433d
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -1490,9 +1490,7 @@ status_t AudioFlinger::PlaybackThread::addTrack_l(const sp<Track>& track)
        status = NO_ERROR;
    }

    ALOGV("signal playback thread");
    broadcast_l();

    onAddNewTrack_l();
    return status;
}

@@ -2758,6 +2756,12 @@ void AudioFlinger::PlaybackThread::threadLoop_standby()
    }
}

void AudioFlinger::PlaybackThread::onAddNewTrack_l()
{
    ALOGV("signal playback thread");
    broadcast_l();
}

void AudioFlinger::MixerThread::threadLoop_mix()
{
    // obtain the presentation timestamp of the next output buffer
@@ -4080,7 +4084,6 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr
                        // seek when resuming.
                        if (previousTrack->sessionId() != track->sessionId()) {
                            previousTrack->invalidate();
                            mFlushPending = true;
                        }
                    }
                }
@@ -4223,6 +4226,18 @@ void AudioFlinger::OffloadThread::flushHw_l()
    }
}

void AudioFlinger::OffloadThread::onAddNewTrack_l()
{
    sp<Track> previousTrack = mPreviousTrack.promote();
    sp<Track> latestTrack = mLatestActiveTrack.promote();

    if (previousTrack != 0 && latestTrack != 0 &&
        (previousTrack->sessionId() != latestTrack->sessionId())) {
        mFlushPending = true;
    }
    PlaybackThread::onAddNewTrack_l();
}

// ----------------------------------------------------------------------------

AudioFlinger::DuplicatingThread::DuplicatingThread(const sp<AudioFlinger>& audioFlinger,
+2 −1
Original line number Diff line number Diff line
@@ -394,7 +394,7 @@ protected:
    virtual     bool        waitingAsyncCallback();
    virtual     bool        waitingAsyncCallback_l();
    virtual     bool        shouldStandby_l();

    virtual     void        onAddNewTrack_l();

    // ThreadBase virtuals
    virtual     void        preExit();
@@ -753,6 +753,7 @@ protected:
    virtual     bool        waitingAsyncCallback();
    virtual     bool        waitingAsyncCallback_l();
    virtual     bool        shouldStandby_l();
    virtual     void        onAddNewTrack_l();

private:
                void        flushHw_l();