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

Unverified Commit 8de6650c authored by Michael Bestas's avatar Michael Bestas
Browse files

Merge tag 'android-14.0.0_r35' into staging/lineage-21.0_merge-android-14.0.0_r35

Android 14.0.0 release 35

# -----BEGIN PGP SIGNATURE-----
#
# iF0EABECAB0WIQRDQNE1cO+UXoOBCWTorT+BmrEOeAUCZjpriAAKCRDorT+BmrEO
# eNijAJ4zLdTLuyQJAh43Tw9VOiDN5q5n0ACePzaVwzG/nDtWV0gqrFFeuZ/fEuQ=
# =Jr3/
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue May  7 20:57:28 2024 EEST
# gpg:                using DSA key 4340D13570EF945E83810964E8AD3F819AB10E78
# gpg: Good signature from "The Android Open Source Project <initial-contribution@android.com>" [marginal]
# gpg: initial-contribution@android.com: Verified 2427 signatures in the past
#      2 years.  Encrypted 4 messages in the past 2 years.
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg:          It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 4340 D135 70EF 945E 8381  0964 E8AD 3F81 9AB1 0E78

# By Łukasz Rymanowski
# Via Android Build Coastguard Worker
* tag 'android-14.0.0_r35':
  leaudio: Fix crash on metadata update

Change-Id: Ic13853c0947a1916799a00f7cd0d7849f848fe6a
parents e52c1f82 c7a33936
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -105,7 +105,8 @@ class LeAudioSinkAudioHalClient {
    virtual ~Callbacks() = default;
    virtual void OnAudioSuspend(void) = 0;
    virtual void OnAudioResume(void) = 0;
    virtual void OnAudioMetadataUpdate(sink_metadata_v7 sink_metadata) = 0;
    virtual void OnAudioMetadataUpdate(
        const std::vector<struct record_track_metadata_v7> sink_metadata) = 0;

    base::WeakPtrFactory<Callbacks> weak_factory_{this};
  };
@@ -145,7 +146,8 @@ class LeAudioSourceAudioHalClient {
    virtual void OnAudioDataReady(const std::vector<uint8_t>& data) = 0;
    virtual void OnAudioSuspend(void) = 0;
    virtual void OnAudioResume(void) = 0;
    virtual void OnAudioMetadataUpdate(source_metadata_v7 source_metadata,
    virtual void OnAudioMetadataUpdate(
        const std::vector<struct playback_track_metadata_v7> source_metadata,
        DsaMode dsa_mode) = 0;

    base::WeakPtrFactory<Callbacks> weak_factory_{this};
+9 −5
Original line number Diff line number Diff line
@@ -216,8 +216,10 @@ class MockLeAudioClientAudioSinkEventReceiver
              (override));
  MOCK_METHOD((void), OnAudioSuspend, (), (override));
  MOCK_METHOD((void), OnAudioResume, (), (override));
  MOCK_METHOD((void), OnAudioMetadataUpdate,
              (source_metadata_v7 source_metadata, DsaMode dsa_mode),
  MOCK_METHOD(
      (void), OnAudioMetadataUpdate,
      (const std::vector<struct playback_track_metadata_v7> source_metadata,
       DsaMode dsa_mode),
      (override));
};

@@ -226,7 +228,9 @@ class MockAudioHalClientEventReceiver
 public:
  MOCK_METHOD((void), OnAudioSuspend, (), (override));
  MOCK_METHOD((void), OnAudioResume, (), (override));
  MOCK_METHOD((void), OnAudioMetadataUpdate, (sink_metadata_v7 sink_metadata),
  MOCK_METHOD(
      (void), OnAudioMetadataUpdate,
      (const std::vector<struct record_track_metadata_v7> sink_metadata),
      (override));
};

+5 −1
Original line number Diff line number Diff line
@@ -162,11 +162,15 @@ bool SinkImpl::OnMetadataUpdateReq(const sink_metadata_v7_t& sink_metadata) {
    return false;
  }

  std::vector<struct record_track_metadata_v7> metadata(
      sink_metadata.tracks, sink_metadata.tracks + sink_metadata.track_count);

  bt_status_t status = do_in_main_thread(
      FROM_HERE,
      base::BindOnce(
          &LeAudioSinkAudioHalClient::Callbacks::OnAudioMetadataUpdate,
          audioSinkCallbacks_->weak_factory_.GetWeakPtr(), sink_metadata));
          audioSinkCallbacks_->weak_factory_.GetWeakPtr(),
          std::move(metadata)));
  if (status == BT_STATUS_SUCCESS) {
    return true;
  }
+6 −2
Original line number Diff line number Diff line
@@ -299,12 +299,16 @@ bool SourceImpl::OnMetadataUpdateReq(
    return false;
  }

  std::vector<struct playback_track_metadata_v7> metadata(
      source_metadata.tracks,
      source_metadata.tracks + source_metadata.track_count);

  bt_status_t status = do_in_main_thread(
      FROM_HERE,
      base::BindOnce(
          &LeAudioSourceAudioHalClient::Callbacks::OnAudioMetadataUpdate,
          audioSourceCallbacks_->weak_factory_.GetWeakPtr(), source_metadata,
          dsa_mode));
          audioSourceCallbacks_->weak_factory_.GetWeakPtr(),
          std::move(metadata), dsa_mode));
  if (status == BT_STATUS_SUCCESS) {
    return true;
  }
+3 −2
Original line number Diff line number Diff line
@@ -1081,7 +1081,8 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks {
      instance->le_audio_source_hal_client_->ConfirmStreamingRequest();
    }

    virtual void OnAudioMetadataUpdate(source_metadata_v7 source_metadata,
    virtual void OnAudioMetadataUpdate(
        const std::vector<struct playback_track_metadata_v7> source_metadata,
        DsaMode dsa_mode) override {
      LOG_INFO();
      if (!instance) return;
Loading