diff options
author | Wonsik Kim <wonsik@google.com> | 2015-02-03 23:52:42 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-02-03 23:52:42 +0000 |
commit | b86a45588a67f88730c15c82f624cd64fe1da80c (patch) | |
tree | c0d258353da4bd71eea20e365c7ab9c91d3ed772 /media/java | |
parent | d8e6a8b7643ffa037fbd0e409674c450f0296809 (diff) | |
parent | 015fdf392388f1bed3298f9f44012c1a82d7c1a1 (diff) | |
download | frameworks_base-b86a45588a67f88730c15c82f624cd64fe1da80c.zip frameworks_base-b86a45588a67f88730c15c82f624cd64fe1da80c.tar.gz frameworks_base-b86a45588a67f88730c15c82f624cd64fe1da80c.tar.bz2 |
am 015fdf39: Merge "audio: allow audio port cache update even when audio patches contain invalidated sources/sinks" into lmp-mr1-dev automerge: d7310bd
* commit '015fdf392388f1bed3298f9f44012c1a82d7c1a1':
audio: allow audio port cache update even when audio patches contain invalidated sources/sinks
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/AudioManager.java | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 67c0552..240faef 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -46,9 +46,9 @@ import android.provider.Settings; import android.util.Log; import android.view.KeyEvent; -import java.util.HashMap; import java.util.ArrayList; - +import java.util.HashMap; +import java.util.Iterator; /** * AudioManager provides access to volume and ringer mode control. @@ -3650,11 +3650,13 @@ public class AudioManager { newPorts.clear(); status = AudioSystem.listAudioPorts(newPorts, portGeneration); if (status != SUCCESS) { + Log.w(TAG, "updateAudioPortCache: listAudioPorts failed"); return status; } newPatches.clear(); status = AudioSystem.listAudioPatches(newPatches, patchGeneration); if (status != SUCCESS) { + Log.w(TAG, "updateAudioPortCache: listAudioPatches failed"); return status; } } while (patchGeneration[0] != portGeneration[0]); @@ -3663,18 +3665,33 @@ public class AudioManager { for (int j = 0; j < newPatches.get(i).sources().length; j++) { AudioPortConfig portCfg = updatePortConfig(newPatches.get(i).sources()[j], newPorts); - if (portCfg == null) { - return ERROR; - } newPatches.get(i).sources()[j] = portCfg; } for (int j = 0; j < newPatches.get(i).sinks().length; j++) { AudioPortConfig portCfg = updatePortConfig(newPatches.get(i).sinks()[j], newPorts); + newPatches.get(i).sinks()[j] = portCfg; + } + } + for (Iterator<AudioPatch> i = newPatches.iterator(); i.hasNext(); ) { + AudioPatch newPatch = i.next(); + boolean hasInvalidPort = false; + for (AudioPortConfig portCfg : newPatch.sources()) { if (portCfg == null) { - return ERROR; + hasInvalidPort = true; + break; } - newPatches.get(i).sinks()[j] = portCfg; + } + for (AudioPortConfig portCfg : newPatch.sinks()) { + if (portCfg == null) { + hasInvalidPort = true; + break; + } + } + if (hasInvalidPort) { + // Temporarily remove patches with invalid ports. One who created the patch + // is responsible for dealing with the port change. + i.remove(); } } |