Merge "Fix flaky failures when re-registering AudioPolicy." into udc-dev

This commit is contained in:
Ján Sebechlebský
2023-03-29 09:31:40 +00:00
committed by Android (Google) Code Review
2 changed files with 11 additions and 16 deletions

View File

@@ -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();
}
//==================================================

View File

@@ -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")