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

Commit 9a045343 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"...

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

Change-Id: I42e626164554fee654176d631fd067c9dfceca6e
parents 1911d2ec 8b08ffad
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -4807,6 +4807,18 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
        track->reset();
        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...
    // remove all the tracks that need to be...
    removeTracks_l(*tracksToRemove);
    removeTracks_l(*tracksToRemove);