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

Commit b0474448 authored by Venkata Jagadeesh Garaga's avatar Venkata Jagadeesh Garaga Committed by Jakub Pawlowski
Browse files

Title: Auto connection not getting initiated after pairing

Issue:
mProfiles list getting corrupted as its not protected with
lock and auto connection failing

Steps:
1.Turn on BT
2.Scan the remote headset from DUT
3.Initiating pairing to remote device
4.unpair the remote from DUT UI

Repeat steps from 2 to 4. Some times auto connection not
getting initiated from DUT.

RootCause:
if mProfiles accessed simultaneously from onUuidChanged and
connectAllEnabledProfiles ,its leading to list corruption.
Settings not able to initiate Auto connection as mProfiles
list shown as empty.

Fix:
Remove redundant mProfiles empty check in onUuidChanged

- mProfiles accessed inside onUuidChanged without syncronization,
  if mProfiles accessed simultaneously from onUuidChanged and
  connectAllEnabledProfiles ,it might lead to list corruption.

- mProfiles empty check already there in connectAllEnabledProfiles

Hence removing  mProfiles empty conditional check in onUuidChanged

Test: Follow steps above
Bug: 150653750
Change-Id: I88aa6a6cd46d264f4dd32db71e413079bbd40779
parent 2edc5306
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -609,8 +609,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
         * If a connect was attempted earlier without any UUID, we will do the connect now.
         * Otherwise, allow the connect on UUID change.
         */
        if (!mProfiles.isEmpty()
                && ((mConnectAttempted + timeout) > SystemClock.elapsedRealtime())) {
        if ((mConnectAttempted + timeout) > SystemClock.elapsedRealtime()) {
            Log.d(TAG, "onUuidChanged: triggering connectAllEnabledProfiles");
            connectAllEnabledProfiles();
        }