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

Commit f3e21c30 authored by Glenn Kasten's avatar Glenn Kasten Committed by Android Git Automerger
Browse files

am 60f3f102: Merge "Prevent AudioCommands being freed before read"

* commit '60f3f102':
  Prevent AudioCommands being freed before read
parents 82fc2ca6 60f3f102
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ static const char kCmdDeadlockedString[] = "AudioPolicyService command thread ma
static const int kDumpLockRetries = 50;
static const int kDumpLockSleepUs = 20000;

static const nsecs_t kAudioCommandTimeout = 3000000000; // 3 seconds

namespace {
    extern struct audio_policy_service_ops aps_ops;
};
@@ -707,7 +709,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
                                                                    data->mIO);
                    if (command->mWaitStatus) {
                        command->mCond.signal();
                        mWaitWorkCV.wait(mLock);
                        command->mCond.waitRelative(mLock, kAudioCommandTimeout);
                    }
                    delete data;
                    }break;
@@ -718,7 +720,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
                    command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
                    if (command->mWaitStatus) {
                        command->mCond.signal();
                        mWaitWorkCV.wait(mLock);
                        command->mCond.waitRelative(mLock, kAudioCommandTimeout);
                    }
                    delete data;
                    }break;
@@ -729,7 +731,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
                    command->mStatus = AudioSystem::setVoiceVolume(data->mVolume);
                    if (command->mWaitStatus) {
                        command->mCond.signal();
                        mWaitWorkCV.wait(mLock);
                        command->mCond.waitRelative(mLock, kAudioCommandTimeout);
                    }
                    delete data;
                    }break;
@@ -837,7 +839,7 @@ status_t AudioPolicyService::AudioCommandThread::volumeCommand(audio_stream_type
    if (command->mWaitStatus) {
        command->mCond.wait(mLock);
        status =  command->mStatus;
        mWaitWorkCV.signal();
        command->mCond.signal();
    }
    return status;
}
@@ -862,7 +864,7 @@ status_t AudioPolicyService::AudioCommandThread::parametersCommand(audio_io_hand
    if (command->mWaitStatus) {
        command->mCond.wait(mLock);
        status =  command->mStatus;
        mWaitWorkCV.signal();
        command->mCond.signal();
    }
    return status;
}
@@ -883,7 +885,7 @@ status_t AudioPolicyService::AudioCommandThread::voiceVolumeCommand(float volume
    if (command->mWaitStatus) {
        command->mCond.wait(mLock);
        status =  command->mStatus;
        mWaitWorkCV.signal();
        command->mCond.signal();
    }
    return status;
}