From 9a7d922796c61353e30cea5878f41b921adc79b0 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Thu, 2 Jul 2015 15:30:23 -0700 Subject: audio policy: add support for device combo with speaker safe combo devices with AUDIO_DEVICE_OUT_SPEAKER_SAFE were not supported by audio policy manager causing selection of speaker+headphone when spekaer_safe+headphone would be the right selection. Bug: 21537010. Change-Id: I9865352559c9d32c6754ad3d2b84bddfe2dc8aac --- services/audiopolicy/enginedefault/src/Engine.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'services/audiopolicy/enginedefault') diff --git a/services/audiopolicy/enginedefault/src/Engine.cpp b/services/audiopolicy/enginedefault/src/Engine.cpp index 7a785eb..0686414 100755 --- a/services/audiopolicy/enginedefault/src/Engine.cpp +++ b/services/audiopolicy/enginedefault/src/Engine.cpp @@ -319,8 +319,11 @@ audio_devices_t Engine::getDeviceForStrategy(routing_strategy strategy) const device = getDeviceForStrategy(STRATEGY_SONIFICATION); //user "safe" speaker if available instead of normal speaker to avoid triggering //other acoustic safety mechanisms for notification - if (device == AUDIO_DEVICE_OUT_SPEAKER && (availableOutputDevicesType & AUDIO_DEVICE_OUT_SPEAKER_SAFE)) - device = AUDIO_DEVICE_OUT_SPEAKER_SAFE; + if ((device & AUDIO_DEVICE_OUT_SPEAKER) && + (availableOutputDevicesType & AUDIO_DEVICE_OUT_SPEAKER_SAFE)) { + device |= AUDIO_DEVICE_OUT_SPEAKER_SAFE; + device &= ~AUDIO_DEVICE_OUT_SPEAKER; + } } else if (outputs.isStreamActive(AUDIO_STREAM_MUSIC, SONIFICATION_RESPECTFUL_AFTER_MUSIC_DELAY)) { // while media is playing (or has recently played), use the same device device = getDeviceForStrategy(STRATEGY_MEDIA); @@ -329,8 +332,11 @@ audio_devices_t Engine::getDeviceForStrategy(routing_strategy strategy) const device = getDeviceForStrategy(STRATEGY_SONIFICATION); //user "safe" speaker if available instead of normal speaker to avoid triggering //other acoustic safety mechanisms for notification - if (device == AUDIO_DEVICE_OUT_SPEAKER && (availableOutputDevicesType & AUDIO_DEVICE_OUT_SPEAKER_SAFE)) - device = AUDIO_DEVICE_OUT_SPEAKER_SAFE; + if ((device & AUDIO_DEVICE_OUT_SPEAKER) && + (availableOutputDevicesType & AUDIO_DEVICE_OUT_SPEAKER_SAFE)) { + device |= AUDIO_DEVICE_OUT_SPEAKER_SAFE; + device &= ~AUDIO_DEVICE_OUT_SPEAKER; + } } break; -- cgit v1.1