diff options
| author | 2023-03-29 09:31:40 +0000 | |
|---|---|---|
| committer | 2023-03-29 09:31:40 +0000 | |
| commit | 92ad02c41e9c7d31db8ef51e51a1a72425c6912e (patch) | |
| tree | 625f62681170ce0ddf6663ab4b4d7d8d7fd52933 | |
| parent | 39454fbf1ddecf39324af5184a49e32e042c1b56 (diff) | |
| parent | 4e850d1cff074d06abe721cdc922f299015b37ea (diff) | |
Merge "Fix flaky failures when re-registering AudioPolicy." into udc-dev
| -rw-r--r-- | media/java/android/media/audiopolicy/AudioPolicy.java | 20 | ||||
| -rw-r--r-- | media/java/android/media/audiopolicy/AudioPolicyConfig.java | 7 |
2 files changed, 11 insertions, 16 deletions
diff --git a/media/java/android/media/audiopolicy/AudioPolicy.java b/media/java/android/media/audiopolicy/AudioPolicy.java index 3ba1d1f0eca2..c1ee74a70a15 100644 --- a/media/java/android/media/audiopolicy/AudioPolicy.java +++ b/media/java/android/media/audiopolicy/AudioPolicy.java @@ -75,11 +75,13 @@ public class AudioPolicy { */ public static final int POLICY_STATUS_REGISTERED = 2; + @GuardedBy("mLock") private int mStatus; + @GuardedBy("mLock") private String mRegistrationId; - private AudioPolicyStatusListener mStatusListener; - private boolean mIsFocusPolicy; - private boolean mIsTestFocusPolicy; + private final AudioPolicyStatusListener mStatusListener; + private final boolean mIsFocusPolicy; + private final boolean mIsTestFocusPolicy; /** * The list of AudioTrack instances created to inject audio into the associated mixes @@ -115,6 +117,7 @@ public class AudioPolicy { private Context mContext; + @GuardedBy("mLock") private AudioPolicyConfig mConfig; private final MediaProjection mProjection; @@ -552,7 +555,6 @@ public class AudioPolicy { /** @hide */ public void reset() { setRegistration(null); - mConfig.reset(); } public void setRegistration(String regId) { @@ -563,6 +565,7 @@ public class AudioPolicy { mStatus = POLICY_STATUS_REGISTERED; } else { mStatus = POLICY_STATUS_UNREGISTERED; + mConfig.reset(); } } sendMsg(MSG_POLICY_STATUS_CHANGE); @@ -940,14 +943,9 @@ public class AudioPolicy { } private void onPolicyStatusChange() { - AudioPolicyStatusListener l; - synchronized (mLock) { - if (mStatusListener == null) { - return; - } - l = mStatusListener; + if (mStatusListener != null) { + mStatusListener.onStatusChange(); } - l.onStatusChange(); } //================================================== diff --git a/media/java/android/media/audiopolicy/AudioPolicyConfig.java b/media/java/android/media/audiopolicy/AudioPolicyConfig.java index ce9773312a10..7a85d21bf144 100644 --- a/media/java/android/media/audiopolicy/AudioPolicyConfig.java +++ b/media/java/android/media/audiopolicy/AudioPolicyConfig.java @@ -42,9 +42,7 @@ public class AudioPolicyConfig implements Parcelable { private String mRegistrationId = null; - /** counter for the mixes that are / have been in the list of AudioMix - * e.g. register 4 mixes (counter is 3), remove 1 (counter is 3), add 1 (counter is 4) - */ + // Corresponds to id of next mix to be registered. private int mMixCounter = 0; protected AudioPolicyConfig(AudioPolicyConfig conf) { @@ -286,7 +284,7 @@ public class AudioPolicyConfig implements Parcelable { if ((mix.getRouteFlags() & AudioMix.ROUTE_FLAG_LOOP_BACK) == AudioMix.ROUTE_FLAG_LOOP_BACK) { mix.setRegistration(mRegistrationId + "mix" + mixTypeId(mix.getMixType()) + ":" - + mMixCounter); + + mMixCounter++); } else if ((mix.getRouteFlags() & AudioMix.ROUTE_FLAG_RENDER) == AudioMix.ROUTE_FLAG_RENDER) { mix.setRegistration(mix.mDeviceAddress); @@ -294,7 +292,6 @@ public class AudioPolicyConfig implements Parcelable { } else { mix.setRegistration(""); } - mMixCounter++; } @GuardedBy("mMixes") |