diff options
author | Eric Laurent <elaurent@google.com> | 2014-10-27 16:07:59 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2015-01-20 11:53:41 -0800 |
commit | 832141ca6138fa0d0bb0a9d62b033781db49ff5d (patch) | |
tree | 8b39b51fe1088524df858f88250355b90b431b32 | |
parent | 1efe46deb86b8ca246e2486ec16d88efd9e1e657 (diff) | |
download | frameworks_av-832141ca6138fa0d0bb0a9d62b033781db49ff5d.zip frameworks_av-832141ca6138fa0d0bb0a9d62b033781db49ff5d.tar.gz frameworks_av-832141ca6138fa0d0bb0a9d62b033781db49ff5d.tar.bz2 |
DO NOT MERGE - audio policy: fix output device command after clearing audio patch
Make sure that a valid audio patch is created again on an output stream
following the disconnection and reconnection of the same output device.
Bug: 18144611.
Change-Id: I72387ad8e93f8fb2571da2a6c58a6e167ac7fc4d
-rw-r--r-- | services/audiopolicy/AudioPolicyManager.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/audiopolicy/AudioPolicyManager.cpp b/services/audiopolicy/AudioPolicyManager.cpp index 3e1506d..db320af 100644 --- a/services/audiopolicy/AudioPolicyManager.cpp +++ b/services/audiopolicy/AudioPolicyManager.cpp @@ -4345,11 +4345,15 @@ uint32_t AudioPolicyManager::setOutputDevice(audio_io_handle_t output, muteWaitMs = checkDeviceMuteStrategies(outputDesc, prevDevice, delayMs); // Do not change the routing if: - // - the requested device is AUDIO_DEVICE_NONE - // - the requested device is the same as current device and force is not specified. + // the requested device is AUDIO_DEVICE_NONE + // OR the requested device is the same as current device + // AND force is not specified + // AND the output is connected by a valid audio patch. // Doing this check here allows the caller to call setOutputDevice() without conditions - if ((device == AUDIO_DEVICE_NONE || device == prevDevice) && !force) { - ALOGV("setOutputDevice() setting same device %04x or null device for output %d", device, output); + if ((device == AUDIO_DEVICE_NONE || device == prevDevice) && !force && + outputDesc->mPatchHandle != 0) { + ALOGV("setOutputDevice() setting same device %04x or null device for output %d", + device, output); return muteWaitMs; } |