summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorPaul McLean <pmclean@google.com>2014-08-20 16:47:57 -0700
committerPaul McLean <pmclean@google.com>2014-08-27 16:38:27 -0700
commit5c477aa6205e2ebafec237411900d89a510cc105 (patch)
treeb62a1e44d2296d2f0a1e6aefe90e4c04722cca59 /services
parent1754351d9199721e7e7943461689e399ef015260 (diff)
downloadframeworks_av-5c477aa6205e2ebafec237411900d89a510cc105.zip
frameworks_av-5c477aa6205e2ebafec237411900d89a510cc105.tar.gz
frameworks_av-5c477aa6205e2ebafec237411900d89a510cc105.tar.bz2
Fix audio dropouts with multiple playback streams.
Bug 17136569 Change-Id: I7f69cb24168c7d27ce28679735f53c1ece4014c1
Diffstat (limited to 'services')
-rw-r--r--services/audiopolicy/AudioPolicyManager.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp
index b643eac..41d726c 100644
--- a/services/audiopolicy/AudioPolicyManager.cpp
+++ b/services/audiopolicy/AudioPolicyManager.cpp
@@ -271,7 +271,13 @@ status_t AudioPolicyManager::setDeviceConnectionState(audio_devices_t device,
return INVALID_OPERATION;
}
- ALOGV("setDeviceConnectionState() disconnecting device %x", device);
+ ALOGV("setDeviceConnectionState() disconnecting output device %x", device);
+
+ // Set Disconnect to HALs
+ AudioParameter param = AudioParameter(address);
+ param.addInt(String8(AUDIO_PARAMETER_DEVICE_DISCONNECT), device);
+ mpClientInterface->setParameters(AUDIO_IO_HANDLE_NONE, param.toString());
+
// remove device from available output devices
mAvailableOutputDevices.remove(devDesc);
@@ -368,8 +374,17 @@ status_t AudioPolicyManager::setDeviceConnectionState(audio_devices_t device,
ALOGW("setDeviceConnectionState() device not connected: %d", device);
return INVALID_OPERATION;
}
+
+ ALOGV("setDeviceConnectionState() disconnecting input device %x", device);
+
+ // Set Disconnect to HALs
+ AudioParameter param = AudioParameter(address);
+ param.addInt(String8(AUDIO_PARAMETER_DEVICE_DISCONNECT), device);
+ mpClientInterface->setParameters(AUDIO_IO_HANDLE_NONE, param.toString());
+
checkInputsForDevice(device, state, inputs, address);
mAvailableInputDevices.remove(devDesc);
+
} break;
default: