summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2012-10-30 16:14:04 -0700
committerEric Laurent <elaurent@google.com>2012-11-08 08:56:57 -0800
commitfe43d163d6646a175934f0752fa05e3e53e89da4 (patch)
treee990910bab7f33771dee37548260e68c072f8611
parentda06cb6142faa3e09cbf7226ca9c75e45661095b (diff)
downloadhardware_libhardware_legacy-fe43d163d6646a175934f0752fa05e3e53e89da4.tar.gz
hardware_libhardware_legacy-fe43d163d6646a175934f0752fa05e3e53e89da4.tar.bz2
hardware_libhardware_legacy-fe43d163d6646a175934f0752fa05e3e53e89da4.zip
audio policy: fix volume problem - DO NOT MERGE
merge from master: "audio policy: fix volume change when disabling SCO commit 76e97d39 introduced a regression by having setDeviceConnectionState() force a device change on duplicated outputs even if the selected device is 0. This also forces a device 0 for the two outputs it is duplicated to, which may override a valid device selection on those outputs and apply default volumes. Bug 7429869." Change-Id: I37dd66343c54eb27e420089edbda04444fa1e2c6
-rw-r--r--audio/AudioPolicyManagerBase.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/audio/AudioPolicyManagerBase.cpp b/audio/AudioPolicyManagerBase.cpp
index a082239..19fff57 100644
--- a/audio/AudioPolicyManagerBase.cpp
+++ b/audio/AudioPolicyManagerBase.cpp
@@ -169,9 +169,12 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(audio_devices_t device
updateDevicesAndOutputs();
for (size_t i = 0; i < mOutputs.size(); i++) {
+ // do not force device change on duplicated output because if device is 0, it will
+ // also force a device 0 for the two outputs it is duplicated to which may override
+ // a valid device selection on those outputs.
setOutputDevice(mOutputs.keyAt(i),
getNewDevice(mOutputs.keyAt(i), true /*fromCache*/),
- true,
+ !mOutputs.valueAt(i)->isDuplicated(),
0);
}