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

Commit 88853a2f authored by Eric Laurent's avatar Eric Laurent Committed by Android Git Automerger
Browse files

am 1ac56b60: Merge change Iac196e17 into eclair

Merge commit '1ac56b60' into eclair-plus-aosp

* commit '1ac56b60':
  Fix issue 2292062: Audio freezes for three seconds when choosing ringtones with a headset connected and music playing.
parents 4fac1778 1ac56b60
Loading
Loading
Loading
Loading
+6 −5
Original line number Original line Diff line number Diff line
@@ -2277,10 +2277,8 @@ AudioFlinger::PlaybackThread::Track::~Track()
    LOGV("PlaybackThread::Track destructor");
    LOGV("PlaybackThread::Track destructor");
    sp<ThreadBase> thread = mThread.promote();
    sp<ThreadBase> thread = mThread.promote();
    if (thread != 0) {
    if (thread != 0) {
        thread->mLock.lock();
        Mutex::Autolock _l(thread->mLock);
        mState = TERMINATED;
        mState = TERMINATED;
        thread->mLock.unlock();
        AudioSystem::releaseOutput(thread->id());
    }
    }
}
}


@@ -2298,9 +2296,12 @@ void AudioFlinger::PlaybackThread::Track::destroy()
    { // scope for mLock
    { // scope for mLock
        sp<ThreadBase> thread = mThread.promote();
        sp<ThreadBase> thread = mThread.promote();
        if (thread != 0) {
        if (thread != 0) {
            if (!isOutputTrack() && (mState == ACTIVE || mState == RESUMING)) {
            if (!isOutputTrack()) {
                if (mState == ACTIVE || mState == RESUMING) {
                    AudioSystem::stopOutput(thread->id(), (AudioSystem::stream_type)mStreamType);
                    AudioSystem::stopOutput(thread->id(), (AudioSystem::stream_type)mStreamType);
                }
                }
                AudioSystem::releaseOutput(thread->id());
            }
            Mutex::Autolock _l(thread->mLock);
            Mutex::Autolock _l(thread->mLock);
            PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
            PlaybackThread *playbackThread = (PlaybackThread *)thread.get();
            playbackThread->destroyTrack_l(this);
            playbackThread->destroyTrack_l(this);