diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2011-08-14 16:12:09 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-14 16:12:09 -0700 |
commit | 70b5c66a2415cbe9864ad88ae23fb0a151376a18 (patch) | |
tree | 8530323d3499df5dcac65de3f9e79ee7884a8e1a | |
parent | b93ce4ae861f86eb86bc52a8444be7abd5f538d4 (diff) | |
parent | baf674eedd5ecff9da0cf8cabe9868f7699b1695 (diff) | |
download | frameworks_base-70b5c66a2415cbe9864ad88ae23fb0a151376a18.zip frameworks_base-70b5c66a2415cbe9864ad88ae23fb0a151376a18.tar.gz frameworks_base-70b5c66a2415cbe9864ad88ae23fb0a151376a18.tar.bz2 |
Merge "Fail request for audio focus when linkToDeath fails"
-rw-r--r-- | media/java/android/media/AudioService.java | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 62a263e..5951229 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -2749,6 +2749,18 @@ public class AudioService extends IAudioService.Stub { return AudioManager.AUDIOFOCUS_REQUEST_FAILED; } + // handle the potential premature death of the new holder of the focus + // (premature death == death before abandoning focus) + // Register for client death notification + AudioFocusDeathHandler afdh = new AudioFocusDeathHandler(cb); + try { + cb.linkToDeath(afdh, 0); + } catch (RemoteException e) { + // client has already died! + Log.w(TAG, "AudioFocus requestAudioFocus() could not link to "+cb+" binder death"); + return AudioManager.AUDIOFOCUS_REQUEST_FAILED; + } + if (!mFocusStack.empty() && mFocusStack.peek().mClientId.equals(clientId)) { // if focus is already owned by this client and the reason for acquiring the focus // hasn't changed, don't do anything @@ -2773,18 +2785,7 @@ public class AudioService extends IAudioService.Stub { } // focus requester might already be somewhere below in the stack, remove it - removeFocusStackEntry(clientId, false); - - // handle the potential premature death of the new holder of the focus - // (premature death == death before abandoning focus) - // Register for client death notification - AudioFocusDeathHandler afdh = new AudioFocusDeathHandler(cb); - try { - cb.linkToDeath(afdh, 0); - } catch (RemoteException e) { - // client has already died! - Log.w(TAG, "AudioFocus requestAudioFocus() could not link to "+cb+" binder death"); - } + removeFocusStackEntry(clientId, false /* signal */); // push focus requester at the top of the audio focus stack mFocusStack.push(new FocusStackEntry(mainStreamType, focusChangeHint, fd, cb, |