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

Commit 71251ff5 authored by Jakub Tyszkowski's avatar Jakub Tyszkowski Committed by Gerrit Code Review
Browse files

Merge changes I9c28afa5,I1e29d42f,Ibe29cce0 into main

* changes:
  LeAudio: Fix not releasing audio interface
  LeAudio: Fix redundant audio hal stop
  LeAudio: Fix error on updating config after session is stopped
parents d89102b9 96b54555
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -329,6 +329,11 @@ bool BluetoothAudioClientInterface::UpdateAudioConfig(
    return true;
  }

  if (!session_started_) {
    log::info("BluetoothAudioHal session has not started");
    return true;
  }

  auto aidl_retval = provider_->updateAudioConfiguration(audio_config);
  if (!aidl_retval.isOk()) {
    log::error("BluetoothAudioHal failure: {}", aidl_retval.getDescription());
+1 −4
Original line number Diff line number Diff line
@@ -106,8 +106,6 @@ void LeAudioClientInterface::Sink::Cleanup() {
            static_cast<int>(HalVersionManager::GetHalTransport()),
            is_broadcaster_);

  StopSession();

  /* Cleanup transport interface and instance according to type and role */
  if (HalVersionManager::GetHalTransport() ==
      BluetoothAudioHalTransport::HIDL) {
@@ -466,7 +464,6 @@ size_t LeAudioClientInterface::Sink::Read(uint8_t* p_buf, uint32_t len) {

void LeAudioClientInterface::Source::Cleanup() {
  log::info("source");
  StopSession();
  if (hidl::le_audio::LeAudioSourceTransport::interface) {
    delete hidl::le_audio::LeAudioSourceTransport::interface;
    hidl::le_audio::LeAudioSourceTransport::interface = nullptr;
@@ -799,7 +796,7 @@ LeAudioClientInterface::Sink* LeAudioClientInterface::GetSink(
    return nullptr;
  }

  Sink* sink = is_broadcasting_session_type ? broadcast_sink_ : unicast_sink_;
  auto& sink = is_broadcasting_session_type ? broadcast_sink_ : unicast_sink_;
  if (sink == nullptr) {
    sink = new Sink(is_broadcasting_session_type);
  } else {
+5 −0
Original line number Diff line number Diff line
@@ -106,6 +106,11 @@ void SinkImpl::Release() {

  log::info("");
  if (halSourceInterface_) {
    if (le_audio_source_hal_state == HAL_STARTED) {
      halSourceInterface_->StopSession();
      le_audio_source_hal_state = HAL_STOPPED;
    }

    halSourceInterface_->Cleanup();

    auto halInterface = audio::le_audio::LeAudioClientInterface::Get();
+5 −0
Original line number Diff line number Diff line
@@ -148,6 +148,11 @@ void SourceImpl::Release() {
  worker_thread_->ShutDown();

  if (halSinkInterface_) {
    if (le_audio_sink_hal_state_ == HAL_STARTED) {
      halSinkInterface_->StopSession();
      le_audio_sink_hal_state_ = HAL_STOPPED;
    }

    halSinkInterface_->Cleanup();

    auto halInterface = audio::le_audio::LeAudioClientInterface::Get();