diff options
| author | 2011-02-11 14:48:20 -0800 | |
|---|---|---|
| committer | 2011-02-11 14:48:20 -0800 | |
| commit | eab7b0bbb4fbec158e66b9058efc9a2c6515eadf (patch) | |
| tree | 10f8c5c8d968ee1fcaff6f6cc674cdbd4b354197 | |
| parent | b3103093a449ba5504b255a584f4fe9968cfda71 (diff) | |
| parent | ee5d4b8fc460a5461a54b3213ea219ce6e145001 (diff) | |
Merge "Fix issue 3425342."
| -rw-r--r-- | services/audioflinger/AudioPolicyManagerBase.cpp | 52 | 
1 files changed, 24 insertions, 28 deletions
diff --git a/services/audioflinger/AudioPolicyManagerBase.cpp b/services/audioflinger/AudioPolicyManagerBase.cpp index 58e9b081d4a8..6a82a595bcd1 100644 --- a/services/audioflinger/AudioPolicyManagerBase.cpp +++ b/services/audioflinger/AudioPolicyManagerBase.cpp @@ -1622,12 +1622,6 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,              if (device) break;              device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET;              if (device) break; -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; -            if (device) break; -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; -            if (device) break; -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; -            if (device) break;  #ifdef WITH_A2DP              // when not in a phone call, phone strategy should route STREAM_VOICE_CALL to A2DP              if (!isInCall()) { @@ -1637,6 +1631,12 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,                  if (device) break;              }  #endif +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; +            if (device) break; +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; +            if (device) break; +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; +            if (device) break;              device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_EARPIECE;              if (device == 0) {                  LOGE("getDeviceForStrategy() earpiece device not found"); @@ -1644,12 +1644,6 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,              break;          case AudioSystem::FORCE_SPEAKER: -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; -            if (device) break; -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; -            if (device) break; -            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; -            if (device) break;  #ifdef WITH_A2DP              // when not in a phone call, phone strategy should route STREAM_VOICE_CALL to              // A2DP speaker when forcing to speaker output @@ -1658,6 +1652,12 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,                  if (device) break;              }  #endif +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; +            if (device) break; +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; +            if (device) break; +            device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; +            if (device) break;              device = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;              if (device == 0) {                  LOGE("getDeviceForStrategy() speaker device not found"); @@ -1686,20 +1686,9 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,          if (device2 == 0) {              device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_WIRED_HEADSET;          } -        if (device2 == 0) { -            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; -        } -        if (device2 == 0) { -            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; -        } -        if (device2 == 0) { -            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; -        }  #ifdef WITH_A2DP -        if (mA2dpOutput != 0) { -            if (strategy == STRATEGY_SONIFICATION && !a2dpUsedForSonification()) { -                break; -            } +        if ((mA2dpOutput != 0) && +                (strategy != STRATEGY_SONIFICATION || a2dpUsedForSonification())) {              if (device2 == 0) {                  device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP;              } @@ -1712,6 +1701,15 @@ uint32_t AudioPolicyManagerBase::getDeviceForStrategy(routing_strategy strategy,          }  #endif          if (device2 == 0) { +            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_AUX_DIGITAL; +        } +        if (device2 == 0) { +            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET; +        } +        if (device2 == 0) { +            device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET; +        } +        if (device2 == 0) {              device2 = mAvailableOutputDevices & AudioSystem::DEVICE_OUT_SPEAKER;          } @@ -1915,9 +1913,7 @@ float AudioPolicyManagerBase::computeVolume(int stream, int index, audio_io_hand          (AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP |          AudioSystem::DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |          AudioSystem::DEVICE_OUT_WIRED_HEADSET | -        AudioSystem::DEVICE_OUT_WIRED_HEADPHONE | -        AudioSystem::DEVICE_OUT_ANLG_DOCK_HEADSET | -        AudioSystem::DEVICE_OUT_DGTL_DOCK_HEADSET)) && +        AudioSystem::DEVICE_OUT_WIRED_HEADPHONE)) &&          ((getStrategy((AudioSystem::stream_type)stream) == STRATEGY_SONIFICATION) ||           (stream == AudioSystem::SYSTEM)) &&          streamDesc.mCanBeMuted) {  |