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

Commit 71f37cd8 authored by Eric Laurent's avatar Eric Laurent
Browse files

Fix isssue 2548710: Native AudioTrack resources never freed.

The problem is a bug in AudioFlinger::MixerThread::prepareTracks_l() that makes that even if the TrackHandle
is destroyed, the corresponding Track will remain active as long as frames are ready for mixing.
If the track uses shared memory (static mode) and the sound is looped, this track will play for ever.

The fix consists in removing the track from active list immediately if the track is terminated.

Change-Id: I4582aa1d981079ab79be442fb6185f5afaed5cf3
parent 804878f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1488,7 +1488,7 @@ uint32_t AudioFlinger::MixerThread::prepareTracks_l(const SortedVector< wp<Track
        // for all its buffers to be filled before processing it
        mAudioMixer->setActiveTrack(track->name());
        if (cblk->framesReady() && (track->isReady() || track->isStopped()) &&
                !track->isPaused())
                !track->isPaused() && !track->isTerminated())
        {
            //LOGV("track %d u=%08x, s=%08x [OK] on thread %p", track->name(), cblk->user, cblk->server, this);