OSDN Git Service

A2DP: Initialize the UIPC HAL only when those binderized HALs are not enabled
authorCheney Ni <cheneyni@google.com>
Wed, 27 Mar 2019 12:58:49 +0000 (20:58 +0800)
committerCheney Ni <cheneyni@google.com>
Wed, 27 Mar 2019 14:32:31 +0000 (22:32 +0800)
When using BluetoothA2dp / BluetoothAudio HAL, the UIPC won't be used,
and is no need to do the initialization. If it is up, there will be an
uipc-main thread running, and we have to release by the UIPC_Close API
before the A2DP source restarting. If we are acquiring a new one before
released, some of its resource will be leaked, and causes the stack
abnormal.

Bug: 128256722
Test: Check uipc-main is running when using the legacy HAL only
Change-Id: Icc8ea102d29c92b58c77099979d17e85e5cb9a83

btif/src/btif_a2dp_source.cc

index 335e62a..9951ce1 100644 (file)
@@ -357,8 +357,12 @@ static void btif_a2dp_source_startup_delayed() {
     LOG(FATAL) << __func__ << ": unable to enable real time scheduling";
   }
   if (!bluetooth::audio::a2dp::init(&btif_a2dp_source_thread)) {
-    LOG(WARNING) << __func__ << ": Using legacy HAL";
-    btif_a2dp_control_init();
+    if (btif_av_is_a2dp_offload_enabled()) {
+      LOG(WARNING) << __func__ << ": Using BluetoothA2dp HAL";
+    } else {
+      LOG(WARNING) << __func__ << ": Using legacy HAL";
+      btif_a2dp_control_init();
+    }
   }
   btif_a2dp_source_cb.SetState(BtifA2dpSource::kStateRunning);
 }