From a1f9917243caafd1da5fa743c6fda1d0614ed167 Mon Sep 17 00:00:00 2001 From: Jungshik Jang Date: Fri, 5 Sep 2014 21:25:48 +0900 Subject: [PATCH] Fix "invalid device combination" in system audio mode. HDMI-CEC system audio mode removes speaker from output list. It also has multiple outputs by connected outputs. However, getDeviceForVolume() doesn't cover multiple output with no speaker or bluetooth case. This change picks one of system audio outputs in order. Bug: 17400026 Change-Id: I102fd0052c9c4c9543f9e8f3b16ec6815d7485d8 --- services/audiopolicy/AudioPolicyManager.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp index a8059236e0..084c853273 100644 --- a/services/audiopolicy/AudioPolicyManager.cpp +++ b/services/audiopolicy/AudioPolicyManager.cpp @@ -4634,8 +4634,15 @@ audio_devices_t AudioPolicyManager::getDeviceForVolume(audio_devices_t device) // - one A2DP device + another device: happens with duplicated output. In this case // retain the device on the A2DP output as the other must not correspond to an active // selection if not the speaker. + // - HDMI-CEC system audio mode only output: give priority to available item in order. if (device & AUDIO_DEVICE_OUT_SPEAKER) { device = AUDIO_DEVICE_OUT_SPEAKER; + } else if (device & AUDIO_DEVICE_OUT_HDMI_ARC) { + device = AUDIO_DEVICE_OUT_HDMI_ARC; + } else if (device & AUDIO_DEVICE_OUT_AUX_LINE) { + device = AUDIO_DEVICE_OUT_AUX_LINE; + } else if (device & AUDIO_DEVICE_OUT_SPDIF) { + device = AUDIO_DEVICE_OUT_SPDIF; } else { device = (audio_devices_t)(device & AUDIO_DEVICE_OUT_ALL_A2DP); } -- 2.11.0