diff options
Diffstat (limited to 'src/com/android/server/telecom/CallAudioRouteStateMachine.java')
-rw-r--r-- | src/com/android/server/telecom/CallAudioRouteStateMachine.java | 26 |
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; + } } } |