summaryrefslogtreecommitdiffstats
path: root/src/com/android/server/telecom/CallAudioRouteStateMachine.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/server/telecom/CallAudioRouteStateMachine.java')
-rw-r--r--src/com/android/server/telecom/CallAudioRouteStateMachine.java26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/com/android/server/telecom/CallAudioRouteStateMachine.java b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
index a501dcad..3cc2dadc 100644
--- a/src/com/android/server/telecom/CallAudioRouteStateMachine.java
+++ b/src/com/android/server/telecom/CallAudioRouteStateMachine.java
@@ -1080,6 +1080,7 @@ public class CallAudioRouteStateMachine extends StateMachine {
private final StatusBarNotifier mStatusBarNotifier;
private final CallAudioManager.AudioServiceFactory mAudioServiceFactory;
private final boolean mDoesDeviceSupportEarpieceRoute;
+ private final TelecomSystem.SyncRoot mLock;
private boolean mHasUserExplicitlyLeftBluetooth = false;
private HashMap<String, Integer> mStateNameToRouteCode;
@@ -1117,6 +1118,7 @@ public class CallAudioRouteStateMachine extends StateMachine {
mStatusBarNotifier = statusBarNotifier;
mAudioServiceFactory = audioServiceFactory;
mDoesDeviceSupportEarpieceRoute = doesDeviceSupportEarpieceRoute;
+ mLock = callsManager.getLock();
mStateNameToRouteCode = new HashMap<>(8);
mStateNameToRouteCode.put(mQuiescentEarpieceRoute.getName(), ROUTE_EARPIECE);
@@ -1298,18 +1300,20 @@ public class CallAudioRouteStateMachine extends StateMachine {
}
private void setSystemAudioState(CallAudioState newCallAudioState, boolean force) {
- Log.i(this, "setSystemAudioState: changing from %s to %s", mLastKnownCallAudioState,
- newCallAudioState);
- if (force || !newCallAudioState.equals(mLastKnownCallAudioState)) {
- if (newCallAudioState.getRoute() != mLastKnownCallAudioState.getRoute()) {
- Log.event(mCallsManager.getForegroundCall(),
- AUDIO_ROUTE_TO_LOG_EVENT.get(newCallAudioState.getRoute(),
- Log.Events.AUDIO_ROUTE));
- }
+ synchronized (mLock) {
+ Log.i(this, "setSystemAudioState: changing from %s to %s", mLastKnownCallAudioState,
+ newCallAudioState);
+ if (force || !newCallAudioState.equals(mLastKnownCallAudioState)) {
+ if (newCallAudioState.getRoute() != mLastKnownCallAudioState.getRoute()) {
+ Log.event(mCallsManager.getForegroundCall(),
+ AUDIO_ROUTE_TO_LOG_EVENT.get(newCallAudioState.getRoute(),
+ Log.Events.AUDIO_ROUTE));
+ }
- mCallsManager.onCallAudioStateChanged(mLastKnownCallAudioState, newCallAudioState);
- updateAudioForForegroundCall(newCallAudioState);
- mLastKnownCallAudioState = newCallAudioState;
+ mCallsManager.onCallAudioStateChanged(mLastKnownCallAudioState, newCallAudioState);
+ updateAudioForForegroundCall(newCallAudioState);
+ mLastKnownCallAudioState = newCallAudioState;
+ }
}
}