diff options
| author | 2010-02-25 00:14:47 -0800 | |
|---|---|---|
| committer | 2010-02-25 00:14:47 -0800 | |
| commit | 83db7782aae2c279e24c56c31a3b25e2c707c9cc (patch) | |
| tree | 34ce7653cf0c003748413146a21d45641c52ad95 /libs/audioflinger/AudioPolicyManagerBase.cpp | |
| parent | 4c0c10cb7a0c023b35a38252e94b735c5291cdaa (diff) | |
| parent | 15498d6a2381c8449186705548c03565b26edc15 (diff) | |
Merge "Fix issue 2327064: Music played via line out is interrupted due to the phone call audio on BT hs."
Diffstat (limited to 'libs/audioflinger/AudioPolicyManagerBase.cpp')
| -rw-r--r-- | libs/audioflinger/AudioPolicyManagerBase.cpp | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/libs/audioflinger/AudioPolicyManagerBase.cpp b/libs/audioflinger/AudioPolicyManagerBase.cpp index 42b6508846..7b866c7737 100644 --- a/libs/audioflinger/AudioPolicyManagerBase.cpp +++ b/libs/audioflinger/AudioPolicyManagerBase.cpp @@ -82,8 +82,8 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev                      // keep track of SCO device address                      mScoDeviceAddress = String8(device_address, MAX_DEVICE_ADDRESS_LEN);  #ifdef WITH_A2DP -                    if ((mA2dpDeviceAddress == mScoDeviceAddress) && -                        (mPhoneState != AudioSystem::MODE_NORMAL)) { +                    if (mA2dpOutput != 0 && +                        mPhoneState != AudioSystem::MODE_NORMAL) {                          mpClientInterface->suspendOutput(mA2dpOutput);                      }  #endif @@ -116,8 +116,8 @@ status_t AudioPolicyManagerBase::setDeviceConnectionState(AudioSystem::audio_dev                  if (AudioSystem::isBluetoothScoDevice(device)) {                      mScoDeviceAddress = "";  #ifdef WITH_A2DP -                    if ((mA2dpDeviceAddress == mScoDeviceAddress) && -                        (mPhoneState != AudioSystem::MODE_NORMAL)) { +                    if (mA2dpOutput != 0 && +                        mPhoneState != AudioSystem::MODE_NORMAL) {                          mpClientInterface->restoreOutput(mA2dpOutput);                      }  #endif @@ -275,10 +275,8 @@ void AudioPolicyManagerBase::setPhoneState(int state)      newDevice = getNewDevice(mHardwareOutput, false);  #ifdef WITH_A2DP      checkOutputForAllStrategies(newDevice); -    // suspend A2DP output if SCO device address is the same as A2DP device address. -    // no need to check that a SCO device is actually connected as mScoDeviceAddress == "" -    // if none is connected and the test below will fail. -    if (mA2dpDeviceAddress == mScoDeviceAddress) { +    // suspend A2DP output if a SCO device is present. +    if (mA2dpOutput != 0 && mScoDeviceAddress != "") {          if (oldState == AudioSystem::MODE_NORMAL) {              mpClientInterface->suspendOutput(mA2dpOutput);          } else if (state == AudioSystem::MODE_NORMAL) { @@ -1191,7 +1189,7 @@ status_t AudioPolicyManagerBase::handleA2dpConnection(AudioSystem::audio_devices      }      AudioOutputDescriptor *hwOutputDesc = mOutputs.valueFor(mHardwareOutput); -    if (mA2dpDeviceAddress == mScoDeviceAddress) { +    if (mScoDeviceAddress != "") {          // It is normal to suspend twice if we are both in call,          // and have the hardware audio output routed to BT SCO          if (mPhoneState != AudioSystem::MODE_NORMAL) { @@ -1556,9 +1554,9 @@ void AudioPolicyManagerBase::setOutputDevice(audio_io_handle_t output, uint32_t          usleep(outputDesc->mLatency*2*1000);      }  #ifdef WITH_A2DP -    // suspend A2D output if SCO device is selected +    // suspend A2DP output if SCO device is selected      if (AudioSystem::isBluetoothScoDevice((AudioSystem::audio_devices)device)) { -         if (mA2dpOutput && mScoDeviceAddress == mA2dpDeviceAddress) { +         if (mA2dpOutput != 0) {               mpClientInterface->suspendOutput(mA2dpOutput);           }      } @@ -1573,7 +1571,7 @@ void AudioPolicyManagerBase::setOutputDevice(audio_io_handle_t output, uint32_t  #ifdef WITH_A2DP      // if disconnecting SCO device, restore A2DP output      if (AudioSystem::isBluetoothScoDevice((AudioSystem::audio_devices)prevDevice)) { -         if (mA2dpOutput && mScoDeviceAddress == mA2dpDeviceAddress) { +         if (mA2dpOutput != 0) {               LOGV("restore A2DP output");               mpClientInterface->restoreOutput(mA2dpOutput);           }  |