diff options
| -rw-r--r-- | services/core/java/com/android/server/audio/FocusRequester.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/MediaFocusControl.java | 16 |
2 files changed, 18 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/audio/FocusRequester.java b/services/core/java/com/android/server/audio/FocusRequester.java index 41008c277e4b..b6d647289ed8 100644 --- a/services/core/java/com/android/server/audio/FocusRequester.java +++ b/services/core/java/com/android/server/audio/FocusRequester.java @@ -140,6 +140,10 @@ public class FocusRequester { return (mFocusDispatcher != null) && mFocusDispatcher.equals(fd); } + @NonNull String getPackageName() { + return mPackageName; + } + boolean hasSamePackage(@NonNull String pack) { return mPackageName.compareTo(pack) == 0; } diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java index f02bb8ffe17f..5025c4aeaf05 100644 --- a/services/core/java/com/android/server/audio/MediaFocusControl.java +++ b/services/core/java/com/android/server/audio/MediaFocusControl.java @@ -353,6 +353,13 @@ public class MediaFocusControl implements PlayerFocusEnforcer { FocusRequester fr = stackIterator.next(); if(fr.hasSameBinder(cb)) { Log.i(TAG, "AudioFocus removeFocusStackEntryOnDeath(): removing entry for " + cb); + mEventLogger.log(new AudioEventLogger.StringEvent( + "focus requester:" + fr.getClientId() + + " in uid:" + fr.getClientUid() + + " pack:" + fr.getPackageName() + + " died")); + notifyExtPolicyFocusLoss_syncAf(fr.toAudioFocusInfo(), false); + stackIterator.remove(); // stack entry not used anymore, clear references fr.release(); @@ -371,7 +378,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { * it has died. */ @GuardedBy("mAudioFocusLock") - private void removeFocusEntryForExtPolicy(IBinder cb) { + private void removeFocusEntryForExtPolicyOnDeath(IBinder cb) { if (mFocusOwnersForFocusPolicy.isEmpty()) { return; } @@ -383,6 +390,11 @@ public class MediaFocusControl implements PlayerFocusEnforcer { final FocusRequester fr = owner.getValue(); if (fr.hasSameBinder(cb)) { ownerIterator.remove(); + mEventLogger.log(new AudioEventLogger.StringEvent( + "focus requester:" + fr.getClientId() + + " in uid:" + fr.getClientUid() + + " pack:" + fr.getPackageName() + + " died")); fr.release(); notifyExtFocusPolicyFocusAbandon_syncAf(fr.toAudioFocusInfo()); break; @@ -456,7 +468,7 @@ public class MediaFocusControl implements PlayerFocusEnforcer { public void binderDied() { synchronized(mAudioFocusLock) { if (mFocusPolicy != null) { - removeFocusEntryForExtPolicy(mCb); + removeFocusEntryForExtPolicyOnDeath(mCb); } else { removeFocusStackEntryOnDeath(mCb); if (mMultiAudioFocusEnabled && !mMultiAudioFocusList.isEmpty()) { |