diff options
author | Eric Laurent <elaurent@google.com> | 2014-09-05 18:32:54 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-05 18:32:54 +0000 |
commit | 615080f60725ae5bc52d20950e2ca61b54bd8600 (patch) | |
tree | f689e74f183857c8debbdc785f6b68ebf6e4ee95 /services | |
parent | 25dc053bd80856b4fb07bf702531f6b94debd00d (diff) | |
parent | 03a9ef73dd1059c92740c271d300b899b7030498 (diff) | |
download | frameworks_av-615080f60725ae5bc52d20950e2ca61b54bd8600.zip frameworks_av-615080f60725ae5bc52d20950e2ca61b54bd8600.tar.gz frameworks_av-615080f60725ae5bc52d20950e2ca61b54bd8600.tar.bz2 |
am 03a9ef73: am f2a2d0d6: Merge "audio policy service: filter out delayed audio patch commands if needed." into lmp-dev
* commit '03a9ef73dd1059c92740c271d300b899b7030498':
audio policy service: filter out delayed audio patch commands if needed.
Diffstat (limited to 'services')
-rw-r--r-- | services/audiopolicy/AudioPolicyService.cpp | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/services/audiopolicy/AudioPolicyService.cpp b/services/audiopolicy/AudioPolicyService.cpp index 7f14960..50bb8c7 100644 --- a/services/audiopolicy/AudioPolicyService.cpp +++ b/services/audiopolicy/AudioPolicyService.cpp @@ -765,7 +765,16 @@ void AudioPolicyService::AudioCommandThread::insertCommand_l(sp<AudioCommand>& c sp<AudioCommand> command2 = mAudioCommands[i]; // commands are sorted by increasing time stamp: no need to scan the rest of mAudioCommands if (command2->mTime <= command->mTime) break; - if (command2->mCommand != command->mCommand) continue; + + // create audio patch or release audio patch commands are equivalent + // with regard to filtering + if ((command->mCommand == CREATE_AUDIO_PATCH) || + (command->mCommand == RELEASE_AUDIO_PATCH)) { + if ((command2->mCommand != CREATE_AUDIO_PATCH) && + (command2->mCommand != RELEASE_AUDIO_PATCH)) { + continue; + } + } else if (command2->mCommand != command->mCommand) continue; switch (command->mCommand) { case SET_PARAMETERS: { @@ -817,6 +826,31 @@ void AudioPolicyService::AudioCommandThread::insertCommand_l(sp<AudioCommand>& c // command status as the command is now delayed delayMs = 1; } break; + + case CREATE_AUDIO_PATCH: + case RELEASE_AUDIO_PATCH: { + audio_patch_handle_t handle; + if (command->mCommand == CREATE_AUDIO_PATCH) { + handle = ((CreateAudioPatchData *)command->mParam.get())->mHandle; + } else { + handle = ((ReleaseAudioPatchData *)command->mParam.get())->mHandle; + } + audio_patch_handle_t handle2; + if (command2->mCommand == CREATE_AUDIO_PATCH) { + handle2 = ((CreateAudioPatchData *)command2->mParam.get())->mHandle; + } else { + handle2 = ((ReleaseAudioPatchData *)command2->mParam.get())->mHandle; + } + if (handle != handle2) break; + ALOGV("Filtering out %s audio patch command for handle %d", + (command->mCommand == CREATE_AUDIO_PATCH) ? "create" : "release", handle); + removedCommands.add(command2); + command->mTime = command2->mTime; + // force delayMs to non 0 so that code below does not request to wait for + // command status as the command is now delayed + delayMs = 1; + } break; + case START_TONE: case STOP_TONE: default: |