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

Commit dc802d65 authored by Himanshu Rawat's avatar Himanshu Rawat
Browse files

Remove devices only in the main thread

BTIF HID host runs in JNI thread and calls `BTA_DmRemoveDevice()` for removing the HID devices. This function removes the device entry from `btm_sec_cb.sec_dev_rec` which must be touched only from the main thread.

Change-Id: I05690191a02ee6f9ebf09c73d90c4ca4365bd171
Test: atest BumbleBluetoothTests:HidHostTest
Flag: com.android.bluetooth.flags.remove_device_in_main_thread
Bug: 380992931
Bug: 381275933
parent 27913d4f
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -119,10 +119,15 @@ void BTA_DmAddDevice(RawAddress bd_addr, DEV_CLASS dev_class, LinkKey link_key,
/** This function removes a device from the security database list of peer
 * device. It manages unpairing even while connected */
tBTA_STATUS BTA_DmRemoveDevice(const RawAddress& bd_addr) {
  if (!com::android::bluetooth::flags::remove_device_in_main_thread()) {
    bta_dm_remove_device(bd_addr);
    return BTA_SUCCESS;
  }

  do_in_main_thread(base::BindOnce(bta_dm_remove_device, bd_addr));
  return BTA_SUCCESS;
}

/*******************************************************************************
 *
 * Function         BTA_DmAddBleKey