Loading services/core/java/com/android/server/audio/AudioService.java +14 −10 Original line number Original line Diff line number Diff line Loading @@ -178,6 +178,7 @@ import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier; import java.util.stream.Collectors; import java.util.stream.Collectors; Loading Loading @@ -330,7 +331,8 @@ public class AudioService extends IAudioService.Stub private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; private int mMode = AudioSystem.MODE_NORMAL; private AtomicInteger mMode = new AtomicInteger(AudioSystem.MODE_NORMAL); // protects mRingerMode // protects mRingerMode private final Object mSettingsLock = new Object(); private final Object mSettingsLock = new Object(); Loading Loading @@ -2996,7 +2998,7 @@ public class AudioService extends IAudioService.Stub } } /*package*/ int getHearingAidStreamType() { /*package*/ int getHearingAidStreamType() { return getHearingAidStreamType(getMode()); return getHearingAidStreamType(mMode.get()); } } private int getHearingAidStreamType(int mode) { private int getHearingAidStreamType(int mode) { Loading Loading @@ -3136,7 +3138,8 @@ public class AudioService extends IAudioService.Stub private void dumpAudioMode(PrintWriter pw) { private void dumpAudioMode(PrintWriter pw) { pw.println("\nAudio mode: "); pw.println("\nAudio mode: "); pw.println("- Current mode = " + AudioSystem.modeToString(getMode())); pw.println("- Requested mode = " + AudioSystem.modeToString(getMode())); pw.println("- Actual mode = " + AudioSystem.modeToString(mMode.get())); pw.println("- Mode owner: "); pw.println("- Mode owner: "); SetModeDeathHandler hdlr = getAudioModeOwnerHandler(); SetModeDeathHandler hdlr = getAudioModeOwnerHandler(); if (hdlr != null) { if (hdlr != null) { Loading Loading @@ -4477,10 +4480,10 @@ public class AudioService extends IAudioService.Stub pid = currentModeHandler.getPid(); pid = currentModeHandler.getPid(); } } if (DEBUG_MODE) { if (DEBUG_MODE) { Log.v(TAG, "onUpdateAudioMode() mode: " + mode + ", mMode: " + mMode Log.v(TAG, "onUpdateAudioMode() new mode: " + mode + ", current mode: " + " requestedMode: " + requestedMode); + mMode.get() + " requested mode: " + requestedMode); } } if (mode != mMode) { if (mode != mMode.get()) { final long identity = Binder.clearCallingIdentity(); final long identity = Binder.clearCallingIdentity(); int status = mAudioSystem.setPhoneState(mode, uid); int status = mAudioSystem.setPhoneState(mode, uid); Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity); Loading @@ -4488,8 +4491,7 @@ public class AudioService extends IAudioService.Stub if (DEBUG_MODE) { if (DEBUG_MODE) { Log.v(TAG, "onUpdateAudioMode: mode successfully set to " + mode); Log.v(TAG, "onUpdateAudioMode: mode successfully set to " + mode); } } int previousMode = mMode; int previousMode = mMode.getAndSet(mode); mMode = mode; // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL mModeLogger.log(new PhoneStateEvent(requesterPackage, requesterPid, mModeLogger.log(new PhoneStateEvent(requesterPackage, requesterPid, requestedMode, pid, mode)); requestedMode, pid, mode)); Loading Loading @@ -5413,8 +5415,10 @@ public class AudioService extends IAudioService.Stub IsInCall = telecomManager.isInCall(); IsInCall = telecomManager.isInCall(); Binder.restoreCallingIdentity(ident); Binder.restoreCallingIdentity(ident); return (IsInCall || getMode() == AudioManager.MODE_IN_COMMUNICATION || int mode = mMode.get(); getMode() == AudioManager.MODE_IN_CALL); return (IsInCall || mode == AudioManager.MODE_IN_COMMUNICATION || mode == AudioManager.MODE_IN_CALL); } } /** /** Loading Loading
services/core/java/com/android/server/audio/AudioService.java +14 −10 Original line number Original line Diff line number Diff line Loading @@ -178,6 +178,7 @@ import java.util.Objects; import java.util.Set; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier; import java.util.stream.Collectors; import java.util.stream.Collectors; Loading Loading @@ -330,7 +331,8 @@ public class AudioService extends IAudioService.Stub private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; private int mMode = AudioSystem.MODE_NORMAL; private AtomicInteger mMode = new AtomicInteger(AudioSystem.MODE_NORMAL); // protects mRingerMode // protects mRingerMode private final Object mSettingsLock = new Object(); private final Object mSettingsLock = new Object(); Loading Loading @@ -2996,7 +2998,7 @@ public class AudioService extends IAudioService.Stub } } /*package*/ int getHearingAidStreamType() { /*package*/ int getHearingAidStreamType() { return getHearingAidStreamType(getMode()); return getHearingAidStreamType(mMode.get()); } } private int getHearingAidStreamType(int mode) { private int getHearingAidStreamType(int mode) { Loading Loading @@ -3136,7 +3138,8 @@ public class AudioService extends IAudioService.Stub private void dumpAudioMode(PrintWriter pw) { private void dumpAudioMode(PrintWriter pw) { pw.println("\nAudio mode: "); pw.println("\nAudio mode: "); pw.println("- Current mode = " + AudioSystem.modeToString(getMode())); pw.println("- Requested mode = " + AudioSystem.modeToString(getMode())); pw.println("- Actual mode = " + AudioSystem.modeToString(mMode.get())); pw.println("- Mode owner: "); pw.println("- Mode owner: "); SetModeDeathHandler hdlr = getAudioModeOwnerHandler(); SetModeDeathHandler hdlr = getAudioModeOwnerHandler(); if (hdlr != null) { if (hdlr != null) { Loading Loading @@ -4477,10 +4480,10 @@ public class AudioService extends IAudioService.Stub pid = currentModeHandler.getPid(); pid = currentModeHandler.getPid(); } } if (DEBUG_MODE) { if (DEBUG_MODE) { Log.v(TAG, "onUpdateAudioMode() mode: " + mode + ", mMode: " + mMode Log.v(TAG, "onUpdateAudioMode() new mode: " + mode + ", current mode: " + " requestedMode: " + requestedMode); + mMode.get() + " requested mode: " + requestedMode); } } if (mode != mMode) { if (mode != mMode.get()) { final long identity = Binder.clearCallingIdentity(); final long identity = Binder.clearCallingIdentity(); int status = mAudioSystem.setPhoneState(mode, uid); int status = mAudioSystem.setPhoneState(mode, uid); Binder.restoreCallingIdentity(identity); Binder.restoreCallingIdentity(identity); Loading @@ -4488,8 +4491,7 @@ public class AudioService extends IAudioService.Stub if (DEBUG_MODE) { if (DEBUG_MODE) { Log.v(TAG, "onUpdateAudioMode: mode successfully set to " + mode); Log.v(TAG, "onUpdateAudioMode: mode successfully set to " + mode); } } int previousMode = mMode; int previousMode = mMode.getAndSet(mode); mMode = mode; // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL mModeLogger.log(new PhoneStateEvent(requesterPackage, requesterPid, mModeLogger.log(new PhoneStateEvent(requesterPackage, requesterPid, requestedMode, pid, mode)); requestedMode, pid, mode)); Loading Loading @@ -5413,8 +5415,10 @@ public class AudioService extends IAudioService.Stub IsInCall = telecomManager.isInCall(); IsInCall = telecomManager.isInCall(); Binder.restoreCallingIdentity(ident); Binder.restoreCallingIdentity(ident); return (IsInCall || getMode() == AudioManager.MODE_IN_COMMUNICATION || int mode = mMode.get(); getMode() == AudioManager.MODE_IN_CALL); return (IsInCall || mode == AudioManager.MODE_IN_COMMUNICATION || mode == AudioManager.MODE_IN_CALL); } } /** /** Loading