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

Commit 8b08ffad authored by Andy Hung's avatar Andy Hung Committed by android-build-merger
Browse files

Merge "AudioFinger: Release buffers in AudioMixer when track becomes inactive" into pi-dev

am: f592b938

Change-Id: I7bf67f744d96c9623dcecc131b67a8cd143d9000
parents d04c9ce1 f592b938
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -4807,6 +4807,18 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
        track->reset();
    }

    // Track destruction may occur outside of threadLoop once it is removed from active tracks.
    // Ensure the AudioMixer doesn't have a raw "buffer provider" pointer to the track if
    // it ceases to be active, to allow safe removal from the AudioMixer at the start
    // of prepareTracks_l(); this releases any outstanding buffer back to the track.
    // See also the implementation of destroyTrack_l().
    for (const auto &track : *tracksToRemove) {
        const int name = track->name();
        if (mAudioMixer->exists(name)) { // Normal tracks here, fast tracks in FastMixer.
            mAudioMixer->setBufferProvider(name, nullptr /* bufferProvider */);
        }
    }

    // remove all the tracks that need to be...
    removeTracks_l(*tracksToRemove);