Merge "Fixed unsafe lock upon safe media volume"
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 46cdd02..10b7522 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -819,9 +819,9 @@
new String("AudioService ctor"),
0);
- mSafeMediaVolumeState = new Integer(Settings.Global.getInt(mContentResolver,
- Settings.Global.AUDIO_SAFE_VOLUME_STATE,
- SAFE_MEDIA_VOLUME_NOT_CONFIGURED));
+ mSafeMediaVolumeState = Settings.Global.getInt(mContentResolver,
+ Settings.Global.AUDIO_SAFE_VOLUME_STATE,
+ SAFE_MEDIA_VOLUME_NOT_CONFIGURED);
// The default safe volume index read here will be replaced by the actual value when
// the mcc is read by onConfigureSafeVolume()
mSafeMediaVolumeIndex = mContext.getResources().getInteger(
@@ -1658,7 +1658,7 @@
}
// reset any pending volume command
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
mPendingVolumeCommand = null;
}
@@ -2011,7 +2011,7 @@
return;
}
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
// reset any pending volume command
mPendingVolumeCommand = null;
@@ -3238,7 +3238,7 @@
checkAllAliasStreamVolumes();
checkMuteAffectedStreams();
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
mMusicActiveMs = MathUtils.constrain(Settings.Secure.getIntForUser(mContentResolver,
Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS, 0, UserHandle.USER_CURRENT),
0, UNSAFE_VOLUME_MUSIC_ACTIVE_MS_MAX);
@@ -4037,7 +4037,7 @@
}
private void onCheckMusicActive(String caller) {
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
if (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_INACTIVE) {
int device = getDeviceForStream(AudioSystem.STREAM_MUSIC);
@@ -4098,7 +4098,7 @@
}
private void onConfigureSafeVolume(boolean force, String caller) {
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
int mcc = mContext.getResources().getConfiguration().mcc;
if ((mMcc != mcc) || ((mMcc == 0) && force)) {
mSafeMediaVolumeIndex = mContext.getResources().getInteger(
@@ -6955,7 +6955,8 @@
private static final int SAFE_MEDIA_VOLUME_DISABLED = 1;
private static final int SAFE_MEDIA_VOLUME_INACTIVE = 2; // confirmed
private static final int SAFE_MEDIA_VOLUME_ACTIVE = 3; // unconfirmed
- private Integer mSafeMediaVolumeState;
+ private int mSafeMediaVolumeState;
+ private final Object mSafeMediaVolumeStateLock = new Object();
private int mMcc = 0;
// mSafeMediaVolumeIndex is the cached value of config_safe_media_volume_index property
@@ -6995,7 +6996,7 @@
}
private void setSafeMediaVolumeEnabled(boolean on, String caller) {
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
if ((mSafeMediaVolumeState != SAFE_MEDIA_VOLUME_NOT_CONFIGURED) &&
(mSafeMediaVolumeState != SAFE_MEDIA_VOLUME_DISABLED)) {
if (on && (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_INACTIVE)) {
@@ -7043,7 +7044,7 @@
}
private boolean checkSafeMediaVolume(int streamType, int index, int device) {
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
if ((mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_ACTIVE) &&
(mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) &&
((device & mSafeMediaVolumeDevices) != 0) &&
@@ -7057,7 +7058,7 @@
@Override
public void disableSafeMediaVolume(String callingPackage) {
enforceVolumeController("disable the safe media volume");
- synchronized (mSafeMediaVolumeState) {
+ synchronized (mSafeMediaVolumeStateLock) {
setSafeMediaVolumeEnabled(false, callingPackage);
if (mPendingVolumeCommand != null) {
onSetStreamVolume(mPendingVolumeCommand.mStreamType,
@@ -7333,7 +7334,7 @@
mVolumeLogger.dump(pw);
}
- private static String safeMediaVolumeStateToString(Integer state) {
+ private static String safeMediaVolumeStateToString(int state) {
switch(state) {
case SAFE_MEDIA_VOLUME_NOT_CONFIGURED: return "SAFE_MEDIA_VOLUME_NOT_CONFIGURED";
case SAFE_MEDIA_VOLUME_DISABLED: return "SAFE_MEDIA_VOLUME_DISABLED";