Loading services/core/java/com/android/server/audio/FocusRequester.java +10 −7 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public class FocusRequester { private static final String TAG = "MediaFocusControl"; private static final boolean DEBUG = false; private AudioFocusDeathHandler mDeathHandler; private final IAudioFocusDispatcher mFocusDispatcher; // may be null private final IBinder mSourceRef; private AudioFocusDeathHandler mDeathHandler; // may be null private IAudioFocusDispatcher mFocusDispatcher; // may be null private final IBinder mSourceRef; // may be null private final String mClientId; private final String mPackageName; private final int mCallingUid; Loading Loading @@ -205,6 +205,7 @@ public class FocusRequester { if (mSourceRef != null && mDeathHandler != null) { mSourceRef.unlinkToDeath(mDeathHandler, 0); mDeathHandler = null; mFocusDispatcher = null; } } catch (java.util.NoSuchElementException e) { Log.e(TAG, "FocusRequester.release() hit ", e); Loading Loading @@ -275,12 +276,13 @@ public class FocusRequester { mFocusLossReceived = AudioManager.AUDIOFOCUS_NONE; mFocusController.notifyExtPolicyFocusGrant_syncAf(toAudioFocusInfo(), AudioManager.AUDIOFOCUS_REQUEST_GRANTED); if (mFocusDispatcher != null) { final IAudioFocusDispatcher fd = mFocusDispatcher; if (fd != null) { if (DEBUG) { Log.v(TAG, "dispatching " + focusChangeToString(focusGain) + " to " + mClientId); } mFocusDispatcher.dispatchAudioFocusChange(focusGain, mClientId); fd.dispatchAudioFocusChange(focusGain, mClientId); } } catch (android.os.RemoteException e) { Log.e(TAG, "Failure to signal gain of audio focus due to: ", e); Loading Loading @@ -311,14 +313,15 @@ public class FocusRequester { toAudioFocusInfo(), false /* wasDispatched */); return; } if (mFocusDispatcher != null) { final IAudioFocusDispatcher fd = mFocusDispatcher; if (fd != null) { if (DEBUG) { Log.v(TAG, "dispatching " + focusChangeToString(mFocusLossReceived) + " to " + mClientId); } mFocusController.notifyExtPolicyFocusLoss_syncAf( toAudioFocusInfo(), true /* wasDispatched */); mFocusDispatcher.dispatchAudioFocusChange(mFocusLossReceived, mClientId); fd.dispatchAudioFocusChange(mFocusLossReceived, mClientId); } } } catch (android.os.RemoteException e) { Loading services/core/java/com/android/server/audio/MediaFocusControl.java +7 −9 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ public class MediaFocusControl { Log.i(TAG, "AudioFocus removeFocusStackEntry(): removing entry for " + clientToRemove); stackIterator.remove(); // stack entry not used anymore, clear references fr.release(); } } Loading @@ -171,7 +172,7 @@ public class MediaFocusControl { * Called synchronized on mAudioFocusLock * Remove focus listeners from the focus stack for a particular client when it has died. */ private void removeFocusStackEntryForClient(IBinder cb) { private void removeFocusStackEntryOnDeath(IBinder cb) { // is the owner of the audio focus part of the client to remove? boolean isTopOfStackForClientToRemove = !mFocusStack.isEmpty() && mFocusStack.peek().hasSameBinder(cb); Loading @@ -181,9 +182,10 @@ public class MediaFocusControl { while(stackIterator.hasNext()) { FocusRequester fr = stackIterator.next(); if(fr.hasSameBinder(cb)) { Log.i(TAG, "AudioFocus removeFocusStackEntry(): removing entry for " + cb); Log.i(TAG, "AudioFocus removeFocusStackEntryOnDeath(): removing entry for " + cb); stackIterator.remove(); // the client just died, no need to unlink to its death // stack entry not used anymore, clear references fr.release(); } } if (isTopOfStackForClientToRemove) { Loading Loading @@ -257,13 +259,8 @@ public class MediaFocusControl { public void binderDied() { synchronized(mAudioFocusLock) { Log.w(TAG, " AudioFocus audio focus client died"); removeFocusStackEntryForClient(mCb); } removeFocusStackEntryOnDeath(mCb); } public IBinder getBinder() { return mCb; } } Loading Loading @@ -420,6 +417,7 @@ public class MediaFocusControl { // (premature death == death before abandoning focus) // Register for client death notification AudioFocusDeathHandler afdh = new AudioFocusDeathHandler(cb); try { cb.linkToDeath(afdh, 0); } catch (RemoteException e) { Loading Loading
services/core/java/com/android/server/audio/FocusRequester.java +10 −7 Original line number Diff line number Diff line Loading @@ -40,9 +40,9 @@ public class FocusRequester { private static final String TAG = "MediaFocusControl"; private static final boolean DEBUG = false; private AudioFocusDeathHandler mDeathHandler; private final IAudioFocusDispatcher mFocusDispatcher; // may be null private final IBinder mSourceRef; private AudioFocusDeathHandler mDeathHandler; // may be null private IAudioFocusDispatcher mFocusDispatcher; // may be null private final IBinder mSourceRef; // may be null private final String mClientId; private final String mPackageName; private final int mCallingUid; Loading Loading @@ -205,6 +205,7 @@ public class FocusRequester { if (mSourceRef != null && mDeathHandler != null) { mSourceRef.unlinkToDeath(mDeathHandler, 0); mDeathHandler = null; mFocusDispatcher = null; } } catch (java.util.NoSuchElementException e) { Log.e(TAG, "FocusRequester.release() hit ", e); Loading Loading @@ -275,12 +276,13 @@ public class FocusRequester { mFocusLossReceived = AudioManager.AUDIOFOCUS_NONE; mFocusController.notifyExtPolicyFocusGrant_syncAf(toAudioFocusInfo(), AudioManager.AUDIOFOCUS_REQUEST_GRANTED); if (mFocusDispatcher != null) { final IAudioFocusDispatcher fd = mFocusDispatcher; if (fd != null) { if (DEBUG) { Log.v(TAG, "dispatching " + focusChangeToString(focusGain) + " to " + mClientId); } mFocusDispatcher.dispatchAudioFocusChange(focusGain, mClientId); fd.dispatchAudioFocusChange(focusGain, mClientId); } } catch (android.os.RemoteException e) { Log.e(TAG, "Failure to signal gain of audio focus due to: ", e); Loading Loading @@ -311,14 +313,15 @@ public class FocusRequester { toAudioFocusInfo(), false /* wasDispatched */); return; } if (mFocusDispatcher != null) { final IAudioFocusDispatcher fd = mFocusDispatcher; if (fd != null) { if (DEBUG) { Log.v(TAG, "dispatching " + focusChangeToString(mFocusLossReceived) + " to " + mClientId); } mFocusController.notifyExtPolicyFocusLoss_syncAf( toAudioFocusInfo(), true /* wasDispatched */); mFocusDispatcher.dispatchAudioFocusChange(mFocusLossReceived, mClientId); fd.dispatchAudioFocusChange(mFocusLossReceived, mClientId); } } } catch (android.os.RemoteException e) { Loading
services/core/java/com/android/server/audio/MediaFocusControl.java +7 −9 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ public class MediaFocusControl { Log.i(TAG, "AudioFocus removeFocusStackEntry(): removing entry for " + clientToRemove); stackIterator.remove(); // stack entry not used anymore, clear references fr.release(); } } Loading @@ -171,7 +172,7 @@ public class MediaFocusControl { * Called synchronized on mAudioFocusLock * Remove focus listeners from the focus stack for a particular client when it has died. */ private void removeFocusStackEntryForClient(IBinder cb) { private void removeFocusStackEntryOnDeath(IBinder cb) { // is the owner of the audio focus part of the client to remove? boolean isTopOfStackForClientToRemove = !mFocusStack.isEmpty() && mFocusStack.peek().hasSameBinder(cb); Loading @@ -181,9 +182,10 @@ public class MediaFocusControl { while(stackIterator.hasNext()) { FocusRequester fr = stackIterator.next(); if(fr.hasSameBinder(cb)) { Log.i(TAG, "AudioFocus removeFocusStackEntry(): removing entry for " + cb); Log.i(TAG, "AudioFocus removeFocusStackEntryOnDeath(): removing entry for " + cb); stackIterator.remove(); // the client just died, no need to unlink to its death // stack entry not used anymore, clear references fr.release(); } } if (isTopOfStackForClientToRemove) { Loading Loading @@ -257,13 +259,8 @@ public class MediaFocusControl { public void binderDied() { synchronized(mAudioFocusLock) { Log.w(TAG, " AudioFocus audio focus client died"); removeFocusStackEntryForClient(mCb); } removeFocusStackEntryOnDeath(mCb); } public IBinder getBinder() { return mCb; } } Loading Loading @@ -420,6 +417,7 @@ public class MediaFocusControl { // (premature death == death before abandoning focus) // Register for client death notification AudioFocusDeathHandler afdh = new AudioFocusDeathHandler(cb); try { cb.linkToDeath(afdh, 0); } catch (RemoteException e) { Loading