diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-06-01 20:06:25 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-06-01 20:06:25 +0000 |
commit | f4dd1916bf6345c2d0069f949817c12686324ff9 (patch) | |
tree | dc020c717f2a5c0aadc2a5265c02988c51689182 | |
parent | f90eca34df4a5fb45bf4a073d21a02e7b3e616b8 (diff) | |
parent | 469e9bc6e1aa0cd5dacf51659e32bda38ddb7ab4 (diff) | |
download | Bluetooth-f4dd1916bf6345c2d0069f949817c12686324ff9.tar.gz |
Merge "Improve internal state synchronization of the A2dpStateMachine" into oc-dev
-rwxr-xr-x | src/com/android/bluetooth/a2dp/A2dpStateMachine.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/com/android/bluetooth/a2dp/A2dpStateMachine.java b/src/com/android/bluetooth/a2dp/A2dpStateMachine.java index 2a8b7c0de..888cbae26 100755 --- a/src/com/android/bluetooth/a2dp/A2dpStateMachine.java +++ b/src/com/android/bluetooth/a2dp/A2dpStateMachine.java @@ -267,14 +267,22 @@ final class A2dpStateMachine extends StateMachine { @Override public void enter() { log("Enter Disconnected: " + getCurrentMessage().what); + if (mCurrentDevice != null || mTargetDevice != null || mIncomingDevice != null) { + loge("ERROR: enter() inconsistent state in Disconnected: current = " + + mCurrentDevice + " target = " + mTargetDevice + " incoming = " + + mIncomingDevice); + } } @Override public boolean processMessage(Message message) { log("Disconnected process message: " + message.what); if (mCurrentDevice != null || mTargetDevice != null || mIncomingDevice != null) { - loge("ERROR: current, target, or mIncomingDevice not null in Disconnected"); - return NOT_HANDLED; + loge("ERROR: not null state in Disconnected: current = " + mCurrentDevice + + " target = " + mTargetDevice + " incoming = " + mIncomingDevice); + mCurrentDevice = null; + mTargetDevice = null; + mIncomingDevice = null; } boolean retValue = HANDLED; @@ -374,6 +382,10 @@ final class A2dpStateMachine extends StateMachine { @Override public void enter() { log("Enter Pending: " + getCurrentMessage().what); + if (mTargetDevice != null && mIncomingDevice != null) { + loge("ERROR: enter() inconsistent state in Pending: current = " + mCurrentDevice + + " target = " + mTargetDevice + " incoming = " + mIncomingDevice); + } } @Override @@ -580,6 +592,11 @@ final class A2dpStateMachine extends StateMachine { removeDeferredMessages(CONNECT); log("Enter Connected: " + getCurrentMessage().what); + if (mTargetDevice != null || mIncomingDevice != null) { + loge("ERROR: enter() inconsistent state in Connected: current = " + mCurrentDevice + + " target = " + mTargetDevice + " incoming = " + mIncomingDevice); + } + // Upon connected, the audio starts out as stopped broadcastAudioState(mCurrentDevice, BluetoothA2dp.STATE_NOT_PLAYING, BluetoothA2dp.STATE_PLAYING); @@ -629,7 +646,9 @@ final class A2dpStateMachine extends StateMachine { BluetoothProfile.STATE_DISCONNECTED); break; } - transitionTo(mPending); + synchronized (A2dpStateMachine.this) { + transitionTo(mPending); + } } break; case STACK_EVENT: |