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

Commit 5f324d7a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Release AudioTrackCallback when the track is removed." into rvc-qpr-dev am: c7d12948

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12629238

Change-Id: I1b635405c05c5a6690ec3da86412b0cd37003e05
parents a0296021 c7d12948
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -2363,7 +2363,7 @@ sp<AudioFlinger::PlaybackThread::Track> AudioFlinger::PlaybackThread::createTrac
        {
            Mutex::Autolock _atCbL(mAudioTrackCbLock);
            if (callback.get() != nullptr) {
                mAudioTrackCallbacks.emplace(callback);
                mAudioTrackCallbacks.emplace(track, callback);
            }
        }

@@ -2591,6 +2591,10 @@ void AudioFlinger::PlaybackThread::removeTrack_l(const sp<Track>& track)
    mLocalLog.log("removeTrack_l (%p) %s", track.get(), result.string());

    mTracks.remove(track);
    {
        Mutex::Autolock _atCbL(mAudioTrackCbLock);
        mAudioTrackCallbacks.erase(track);
    }
    if (track->isFastTrack()) {
        int index = track->mFastIndex;
        ALOG_ASSERT(0 < index && index < (int)FastMixerState::sMaxFastTracks);
@@ -2686,8 +2690,8 @@ void AudioFlinger::PlaybackThread::onCodecFormatChanged(
                    audio_utils::metadata::byteStringFromData(metadata);
            std::vector metadataVec(metaDataStr.begin(), metaDataStr.end());
            Mutex::Autolock _l(mAudioTrackCbLock);
            for (const auto& callback : mAudioTrackCallbacks) {
                callback->onCodecFormatChanged(metadataVec);
            for (const auto& callbackPair : mAudioTrackCallbacks) {
                callbackPair.second->onCodecFormatChanged(metadataVec);
            }
    }).detach();
}
+1 −1
Original line number Diff line number Diff line
@@ -1187,7 +1187,7 @@ private:

    Mutex                                    mAudioTrackCbLock;
    // Record of IAudioTrackCallback
    std::set<sp<media::IAudioTrackCallback>> mAudioTrackCallbacks;
    std::map<sp<Track>, sp<media::IAudioTrackCallback>> mAudioTrackCallbacks;

private:
    // The HAL output sink is treated as non-blocking, but current implementation is blocking