summaryrefslogtreecommitdiff
path: root/libs/audioflinger/AudioPolicyManagerBase.cpp
diff options
context:
space:
mode:
author Jean-Michel Trivi <jmtrivi@google.com> 2010-03-09 09:26:08 -0800
committer Jean-Michel Trivi <jmtrivi@google.com> 2010-03-09 12:45:55 -0800
commit84cf7d9e881f28018235fe024e6fac5b26f318df (patch)
tree04712e6f27a1b853dd3f378bbb3ebdee4974193c /libs/audioflinger/AudioPolicyManagerBase.cpp
parentb51357d774cfaf30df84a54b562b8401477a836f (diff)
Fix bug 2329540
Part 1 of the fix: when the user doesn't elect to use the car dock for music and media, the APM was not aware of the device being docked. This is fixed by dissociating the notification for the APM of the docking to the dock from the sink state change of the A2DP device. Also missing was forcing the volumes to be reevaluated whenever the device is docked or undocked, as volumes for docks may differ, even when the same output device is being used. Change-Id: If5314e27821a71adbd6df6fdf887c45208241d96
Diffstat (limited to 'libs/audioflinger/AudioPolicyManagerBase.cpp')
-rw-r--r--libs/audioflinger/AudioPolicyManagerBase.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/libs/audioflinger/AudioPolicyManagerBase.cpp b/libs/audioflinger/AudioPolicyManagerBase.cpp
index cfcc3ea9e2..2b0a6c8c55 100644
--- a/libs/audioflinger/AudioPolicyManagerBase.cpp
+++ b/libs/audioflinger/AudioPolicyManagerBase.cpp
@@ -344,6 +344,7 @@ void AudioPolicyManagerBase::setForceUse(AudioSystem::force_use usage, AudioSyst
{
LOGV("setForceUse() usage %d, config %d, mPhoneState %d", usage, config, mPhoneState);
+ bool forceVolumeReeval = false;
switch(usage) {
case AudioSystem::FOR_COMMUNICATION:
if (config != AudioSystem::FORCE_SPEAKER && config != AudioSystem::FORCE_BT_SCO &&
@@ -374,6 +375,7 @@ void AudioPolicyManagerBase::setForceUse(AudioSystem::force_use usage, AudioSyst
config != AudioSystem::FORCE_BT_DESK_DOCK && config != AudioSystem::FORCE_WIRED_ACCESSORY) {
LOGW("setForceUse() invalid config %d for FOR_DOCK", config);
}
+ forceVolumeReeval = true;
mForceUse[usage] = config;
break;
default:
@@ -388,6 +390,9 @@ void AudioPolicyManagerBase::setForceUse(AudioSystem::force_use usage, AudioSyst
#endif
updateDeviceForStrategy();
setOutputDevice(mHardwareOutput, newDevice);
+ if (forceVolumeReeval) {
+ applyStreamVolumes(mHardwareOutput, newDevice);
+ }
}
AudioSystem::forced_config AudioPolicyManagerBase::getForceUse(AudioSystem::force_use usage)