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

Commit e99c274c authored by Jakub Pawłowski's avatar Jakub Pawłowski Committed by Automerger Merge Worker
Browse files

Merge "leaudio: Fix switching Active group" am: 12f4a839 am: 9f731100 am: c68e69d5

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/1991955

Change-Id: I2c034681ff112fdf96572f126c6a9289903f3948
parents be2a2bb4 c68e69d5
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -676,6 +676,10 @@ public class LeAudioService extends ProfileService {
                if (mActiveAudioInDevice.isConnected()) {
                    device = mActiveAudioInDevice;
                }
            } else {
                /* Mark old group as no active */
                LeAudioGroupDescriptor descriptor = mGroupDescriptors.get(previousGroupId);
                descriptor.mIsActive = false;
            }
        }

@@ -735,6 +739,11 @@ public class LeAudioService extends ProfileService {
                if (mActiveAudioOutDevice.isConnected()) {
                    device = mActiveAudioOutDevice;
                }
            } else {
                Log.i(TAG, " Switching active group from " + previousGroupId + " to " + groupId);
                /* Mark old group as no active */
                LeAudioGroupDescriptor descriptor = mGroupDescriptors.get(previousGroupId);
                descriptor.mIsActive = false;
            }
        }

+20 −12
Original line number Diff line number Diff line
@@ -671,10 +671,14 @@ class LeAudioClientImpl : public LeAudioClient {
    }

    if (active_group_id_ != bluetooth::groups::kGroupUnknown) {
      LOG(WARNING) << __func__ << ", Another group already active: "
      if (active_group_id_ == group_id) {
        LOG(INFO) << __func__ << ", Group is already active: "
                  << static_cast<int>(active_group_id_);
        callbacks_->OnGroupStatus(active_group_id_, GroupStatus::ACTIVE);
        return;
      }
      LOG(INFO) << __func__ << ", switching active group to: " << group_id;
    }

    if (!audio_source_instance_) {
      audio_source_instance_ = LeAudioClientAudioSource::Acquire();
@@ -701,11 +705,11 @@ class LeAudioClientImpl : public LeAudioClient {
    if (current_source_codec_config.IsInvalid() &&
        current_sink_codec_config.IsInvalid()) {
      LOG(WARNING) << __func__ << ", unsupported device configurations";
      callbacks_->OnGroupStatus(active_group_id_, GroupStatus::INACTIVE);
      return;
    }

    /* Expose audio sessions */
    if (active_group_id_ == bluetooth::groups::kGroupUnknown) {
      /* Expose audio sessions if there was no previous active group */
      audio_framework_source_config.data_interval_us =
          current_source_codec_config.data_interval_us;
      LeAudioClientAudioSource::Start(audio_framework_source_config,
@@ -716,6 +720,10 @@ class LeAudioClientImpl : public LeAudioClient {

      LeAudioClientAudioSink::Start(audio_framework_sink_config,
                                    audioSourceReceiver);
    } else {
      /* In case there was an active group. Stop the stream */
      GroupStop(active_group_id_);
    }

    active_group_id_ = group_id;
    callbacks_->OnGroupStatus(active_group_id_, GroupStatus::ACTIVE);