Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0f9fafe authored by Ayan Ghosh's avatar Ayan Ghosh Committed by android-build-merger
Browse files

Merge "Proper handling of A2DP connetion timeout scenarios" am: 8972dc82

am: 84b8385b

Change-Id: I611627424634f5229d6b91da4e8bfeb37d39d45f
parents 1350d15d 84b8385b
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -272,6 +272,8 @@ final class A2dpStateMachine extends StateMachine {
                        + mCurrentDevice + " target = " + mTargetDevice + " incoming = "
                        + mIncomingDevice);
            }
            // Remove Timeout msg when moved to stable state
            removeMessages(CONNECT_TIMEOUT);
        }

        @Override
@@ -398,6 +400,7 @@ final class A2dpStateMachine extends StateMachine {
                    deferMessage(message);
                    break;
                case CONNECT_TIMEOUT:
                    disconnectA2dpNative(getByteAddress(mTargetDevice));
                    onConnectionStateChanged(CONNECTION_STATE_DISCONNECTED,
                                             getByteAddress(mTargetDevice));
                    break;
@@ -419,7 +422,6 @@ final class A2dpStateMachine extends StateMachine {
                    StackEvent event = (StackEvent) message.obj;
                    switch (event.type) {
                        case EVENT_TYPE_CONNECTION_STATE_CHANGED:
                            removeMessages(CONNECT_TIMEOUT);
                            processConnectionEvent(event.valueInt, event.device);
                            break;
                        default:
@@ -597,6 +599,10 @@ final class A2dpStateMachine extends StateMachine {
                        + " target = " + mTargetDevice + " incoming = " + mIncomingDevice);
            }

            // remove timeout for connected device only.
            if (mTargetDevice == null) {
                removeMessages(CONNECT_TIMEOUT);
            }
            // Upon connected, the audio starts out as stopped
            broadcastAudioState(mCurrentDevice, BluetoothA2dp.STATE_NOT_PLAYING,
                                BluetoothA2dp.STATE_PLAYING);
@@ -655,6 +661,17 @@ final class A2dpStateMachine extends StateMachine {
                    }
                }
                    break;
                case CONNECT_TIMEOUT:
                    if (mTargetDevice == null) {
                        loge("CONNECT_TIMEOUT received for unknown device");
                    } else {
                        loge("CONNECT_TIMEOUT received : connected device : " + mCurrentDevice
                                + " : timedout device : " + mTargetDevice);
                        broadcastConnectionState(mTargetDevice, BluetoothProfile.STATE_DISCONNECTED,
                                BluetoothProfile.STATE_CONNECTING);
                        mTargetDevice = null;
                    }
                    break;
                case STACK_EVENT:
                    StackEvent event = (StackEvent) message.obj;
                    switch (event.type) {