From 5c477aa6205e2ebafec237411900d89a510cc105 Mon Sep 17 00:00:00 2001 From: Paul McLean Date: Wed, 20 Aug 2014 16:47:57 -0700 Subject: Fix audio dropouts with multiple playback streams. Bug 17136569 Change-Id: I7f69cb24168c7d27ce28679735f53c1ece4014c1 --- services/audiopolicy/AudioPolicyManager.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'services') 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: -- cgit v1.1