summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/audio/FocusRequester.java4
-rw-r--r--services/core/java/com/android/server/audio/MediaFocusControl.java16
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()) {