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

Commit cd27b079 authored by Glenn Kasten's avatar Glenn Kasten Committed by Android (Google) Code Review
Browse files

Merge "Revert "Temporary additional logging to investigate bug""

parents 752502c0 ecd9389c
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -227,7 +227,7 @@ public:
    sp<NBLog::Writer>   newWriter_l(size_t size, const char *name);
    sp<NBLog::Writer>   newWriter_l(size_t size, const char *name);
    void                unregisterWriter(const sp<NBLog::Writer>& writer);
    void                unregisterWriter(const sp<NBLog::Writer>& writer);
private:
private:
    static const size_t kLogMemorySize = 20 * 1024;
    static const size_t kLogMemorySize = 10 * 1024;
    sp<MemoryDealer>    mLogMemoryDealer;   // == 0 when NBLog is disabled
    sp<MemoryDealer>    mLogMemoryDealer;   // == 0 when NBLog is disabled
public:
public:


+0 −16
Original line number Original line Diff line number Diff line
@@ -301,11 +301,6 @@ bool FastMixer::threadLoop()
                    const FastTrack* fastTrack = &current->mFastTracks[i];
                    const FastTrack* fastTrack = &current->mFastTracks[i];
                    AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
                    AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
                    ALOG_ASSERT(bufferProvider != NULL && fastTrackNames[i] == -1);
                    ALOG_ASSERT(bufferProvider != NULL && fastTrackNames[i] == -1);
                    if (bufferProvider == NULL ||
                            bufferProvider->getValid() != AudioBufferProvider::kValid) {
                        logWriter->logTimestamp();
                        logWriter->logf("added invalid %#x", i);
                    }
                    if (mixer != NULL) {
                    if (mixer != NULL) {
                        // calling getTrackName with default channel mask and a random invalid
                        // calling getTrackName with default channel mask and a random invalid
                        //   sessionId (no effects here)
                        //   sessionId (no effects here)
@@ -340,11 +335,6 @@ bool FastMixer::threadLoop()
                    if (fastTrack->mGeneration != generations[i]) {
                    if (fastTrack->mGeneration != generations[i]) {
                        AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
                        AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
                        ALOG_ASSERT(bufferProvider != NULL);
                        ALOG_ASSERT(bufferProvider != NULL);
                        if (bufferProvider == NULL ||
                                bufferProvider->getValid() != AudioBufferProvider::kValid) {
                            logWriter->logTimestamp();
                            logWriter->logf("modified invalid %#x", i);
                        }
                        if (mixer != NULL) {
                        if (mixer != NULL) {
                            name = fastTrackNames[i];
                            name = fastTrackNames[i];
                            ALOG_ASSERT(name >= 0);
                            ALOG_ASSERT(name >= 0);
@@ -433,12 +423,6 @@ bool FastMixer::threadLoop()
                }
                }
                ftDump->mUnderruns = underruns;
                ftDump->mUnderruns = underruns;
                ftDump->mFramesReady = framesReady;
                ftDump->mFramesReady = framesReady;
                AudioBufferProvider *bufferProvider = fastTrack->mBufferProvider;
                if (bufferProvider == NULL ||
                        bufferProvider->getValid() != AudioBufferProvider::kValid) {
                    logWriter->logTimestamp();
                    logWriter->logf("mixing invalid %#x", i);
                }
            }
            }


            int64_t pts;
            int64_t pts;
+5 −13
Original line number Original line Diff line number Diff line
@@ -1196,8 +1196,6 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac


    { // scope for mLock
    { // scope for mLock
        Mutex::Autolock _l(mLock);
        Mutex::Autolock _l(mLock);
        mNBLogWriter->logf("createTrack_l isFast=%d caller=%d",
                (*flags & IAudioFlinger::TRACK_FAST) != 0, IPCThreadState::self()->getCallingPid());


        // all tracks in same audio session must share the same routing strategy otherwise
        // all tracks in same audio session must share the same routing strategy otherwise
        // conflicts will happen when tracks are moved from one output to another by audio policy
        // conflicts will happen when tracks are moved from one output to another by audio policy
@@ -1251,6 +1249,7 @@ Exit:
    if (status) {
    if (status) {
        *status = lStatus;
        *status = lStatus;
    }
    }
    mNBLogWriter->logf("createTrack_l");
    return track;
    return track;
}
}


@@ -1318,8 +1317,7 @@ float AudioFlinger::PlaybackThread::streamVolume(audio_stream_type_t stream) con
// addTrack_l() must be called with ThreadBase::mLock held
// addTrack_l() must be called with ThreadBase::mLock held
status_t AudioFlinger::PlaybackThread::addTrack_l(const sp<Track>& track)
status_t AudioFlinger::PlaybackThread::addTrack_l(const sp<Track>& track)
{
{
    mNBLogWriter->logf("addTrack_l mName=%d mFastIndex=%d caller=%d", track->mName,
    mNBLogWriter->logf("addTrack_l mName=%d", track->mName);
            track->mFastIndex, IPCThreadState::self()->getCallingPid());
    status_t status = ALREADY_EXISTS;
    status_t status = ALREADY_EXISTS;


    // set retry count for buffer fill
    // set retry count for buffer fill
@@ -1353,9 +1351,7 @@ status_t AudioFlinger::PlaybackThread::addTrack_l(const sp<Track>& track)
// destroyTrack_l() must be called with ThreadBase::mLock held
// destroyTrack_l() must be called with ThreadBase::mLock held
void AudioFlinger::PlaybackThread::destroyTrack_l(const sp<Track>& track)
void AudioFlinger::PlaybackThread::destroyTrack_l(const sp<Track>& track)
{
{
    mNBLogWriter->logTimestamp();
    mNBLogWriter->logf("destroyTrack_l mName=%d", track->mName);
    mNBLogWriter->logf("destroyTrack_l mName=%d mFastIndex=%d mClientPid=%d", track->mName,
            track->mFastIndex, track->mClient != 0 ? track->mClient->pid() : -1);
    track->mState = TrackBase::TERMINATED;
    track->mState = TrackBase::TERMINATED;
    // active tracks are removed by threadLoop()
    // active tracks are removed by threadLoop()
    if (mActiveTracks.indexOf(track) < 0) {
    if (mActiveTracks.indexOf(track) < 0) {
@@ -1365,9 +1361,7 @@ void AudioFlinger::PlaybackThread::destroyTrack_l(const sp<Track>& track)


void AudioFlinger::PlaybackThread::removeTrack_l(const sp<Track>& track)
void AudioFlinger::PlaybackThread::removeTrack_l(const sp<Track>& track)
{
{
    mNBLogWriter->logTimestamp();
    mNBLogWriter->logf("removeTrack_l mName=%d", track->mName);
    mNBLogWriter->logf("removeTrack_l mName=%d mFastIndex=%d clientPid=%d", track->mName,
            track->mFastIndex, track->mClient != 0 ? track->mClient->pid() : -1);
    track->triggerEvents(AudioSystem::SYNC_EVENT_PRESENTATION_COMPLETE);
    track->triggerEvents(AudioSystem::SYNC_EVENT_PRESENTATION_COMPLETE);
    mTracks.remove(track);
    mTracks.remove(track);
    deleteTrackName_l(track->name());
    deleteTrackName_l(track->name());
@@ -2876,9 +2870,7 @@ track_is_ready: ;
    if (CC_UNLIKELY(count)) {
    if (CC_UNLIKELY(count)) {
        for (size_t i=0 ; i<count ; i++) {
        for (size_t i=0 ; i<count ; i++) {
            const sp<Track>& track = tracksToRemove->itemAt(i);
            const sp<Track>& track = tracksToRemove->itemAt(i);
            mNBLogWriter->logTimestamp();
            mNBLogWriter->logf("prepareTracks_l remove name=%u", track->name());
            mNBLogWriter->logf("prepareTracks_l remove name=%u mFastIndex=%d", track->name(),
                    track->mFastIndex);
            mActiveTracks.remove(track);
            mActiveTracks.remove(track);
            if (track->mainBuffer() != mMixBuffer) {
            if (track->mainBuffer() != mMixBuffer) {
                chain = getEffectChain_l(track->sessionId());
                chain = getEffectChain_l(track->sessionId());
+1 −1
Original line number Original line Diff line number Diff line
@@ -315,7 +315,7 @@ protected:
                // keyed by session ID, the second by type UUID timeLow field
                // keyed by session ID, the second by type UUID timeLow field
                KeyedVector< int, KeyedVector< int, sp<SuspendedSessionDesc> > >
                KeyedVector< int, KeyedVector< int, sp<SuspendedSessionDesc> > >
                                        mSuspendedSessions;
                                        mSuspendedSessions;
                static const size_t     kLogSize = 4096;
                static const size_t     kLogSize = 512;
                sp<NBLog::Writer>       mNBLogWriter;
                sp<NBLog::Writer>       mNBLogWriter;
};
};


+4 −10
Original line number Original line Diff line number Diff line
@@ -351,7 +351,6 @@ AudioFlinger::PlaybackThread::Track::Track(
            // Read the initial underruns because this field is never cleared by the fast mixer
            // Read the initial underruns because this field is never cleared by the fast mixer
            mObservedUnderruns = thread->getFastTrackUnderruns(i);
            mObservedUnderruns = thread->getFastTrackUnderruns(i);
            thread->mFastTrackAvailMask &= ~(1 << i);
            thread->mFastTrackAvailMask &= ~(1 << i);
            thread->mNBLogWriter->logf("new Track mName=%d mFastIndex=%d", mName, mFastIndex);
        }
        }
    }
    }
    ALOGV("Track constructor name %d, calling pid %d", mName,
    ALOGV("Track constructor name %d, calling pid %d", mName,
@@ -361,7 +360,6 @@ AudioFlinger::PlaybackThread::Track::Track(
AudioFlinger::PlaybackThread::Track::~Track()
AudioFlinger::PlaybackThread::Track::~Track()
{
{
    ALOGV("PlaybackThread::Track destructor");
    ALOGV("PlaybackThread::Track destructor");
    // FIXME not sure if safe to log here, would need a lock on thread to do it
}
}


void AudioFlinger::PlaybackThread::Track::destroy()
void AudioFlinger::PlaybackThread::Track::destroy()
@@ -571,8 +569,7 @@ status_t AudioFlinger::PlaybackThread::Track::start(AudioSystem::sync_event_t ev
    sp<ThreadBase> thread = mThread.promote();
    sp<ThreadBase> thread = mThread.promote();
    if (thread != 0) {
    if (thread != 0) {
        Mutex::Autolock _l(thread->mLock);
        Mutex::Autolock _l(thread->mLock);
        thread->mNBLogWriter->logf("start mName=%d mFastIndex=%d caller=%d", mName, mFastIndex,
        thread->mNBLogWriter->logf("start mName=%d", mName);
                IPCThreadState::self()->getCallingPid());
        track_state state = mState;
        track_state state = mState;
        // here the track could be either new, or restarted
        // here the track could be either new, or restarted
        // in both cases "unstop" the track
        // in both cases "unstop" the track
@@ -615,8 +612,7 @@ void AudioFlinger::PlaybackThread::Track::stop()
    sp<ThreadBase> thread = mThread.promote();
    sp<ThreadBase> thread = mThread.promote();
    if (thread != 0) {
    if (thread != 0) {
        Mutex::Autolock _l(thread->mLock);
        Mutex::Autolock _l(thread->mLock);
        thread->mNBLogWriter->logf("stop mName=%d mFastIndex=%d caller=%d", mName, mFastIndex,
        thread->mNBLogWriter->logf("stop mName=%d", mName);
                IPCThreadState::self()->getCallingPid());
        track_state state = mState;
        track_state state = mState;
        if (state == RESUMING || state == ACTIVE || state == PAUSING || state == PAUSED) {
        if (state == RESUMING || state == ACTIVE || state == PAUSING || state == PAUSED) {
            // If the track is not active (PAUSED and buffers full), flush buffers
            // If the track is not active (PAUSED and buffers full), flush buffers
@@ -653,8 +649,7 @@ void AudioFlinger::PlaybackThread::Track::pause()
    sp<ThreadBase> thread = mThread.promote();
    sp<ThreadBase> thread = mThread.promote();
    if (thread != 0) {
    if (thread != 0) {
        Mutex::Autolock _l(thread->mLock);
        Mutex::Autolock _l(thread->mLock);
        thread->mNBLogWriter->logf("pause mName=%d mFastIndex=%d caller=%d", mName, mFastIndex,
        thread->mNBLogWriter->logf("pause mName=%d", mName);
                IPCThreadState::self()->getCallingPid());
        if (mState == ACTIVE || mState == RESUMING) {
        if (mState == ACTIVE || mState == RESUMING) {
            mState = PAUSING;
            mState = PAUSING;
            ALOGV("ACTIVE/RESUMING => PAUSING (%d) on thread %p", mName, thread.get());
            ALOGV("ACTIVE/RESUMING => PAUSING (%d) on thread %p", mName, thread.get());
@@ -678,8 +673,7 @@ void AudioFlinger::PlaybackThread::Track::flush()
    sp<ThreadBase> thread = mThread.promote();
    sp<ThreadBase> thread = mThread.promote();
    if (thread != 0) {
    if (thread != 0) {
        Mutex::Autolock _l(thread->mLock);
        Mutex::Autolock _l(thread->mLock);
        thread->mNBLogWriter->logf("flush mName=%d mFastIndex=%d caller=%d", mName, mFastIndex,
        thread->mNBLogWriter->logf("flush mName=%d", mName);
                IPCThreadState::self()->getCallingPid());
        if (mState != STOPPING_1 && mState != STOPPING_2 && mState != STOPPED && mState != PAUSED &&
        if (mState != STOPPING_1 && mState != STOPPING_2 && mState != STOPPED && mState != PAUSED &&
                mState != PAUSING && mState != IDLE && mState != FLUSHED) {
                mState != PAUSING && mState != IDLE && mState != FLUSHED) {
            return;
            return;