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

Commit f3f3f441 authored by Łukasz Rymanowski's avatar Łukasz Rymanowski
Browse files

leaudio: Fix possible callbacks on non existing object

Make sure, that internal delay callbacks are call only when leAudio
instance exists.

Bug: 290615154
Tag: #feature
Test: atest bluetooth_le_audio_client_test
Test: atest BluetoothInstrumentationTests
Change-Id: I475d5d9ce4ef80573ba57969e875013df816a5a4
parent 7870bd56
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -2177,7 +2177,7 @@ class LeAudioClientImpl : public LeAudioClient {
        FROM_HERE,
        base::BindOnce(
            &LeAudioClientImpl::checkGroupConnectionStateAfterMemberDisconnect,
            base::Unretained(this), group_id),
            weak_factory_.GetWeakPtr(), group_id),
#if BASE_VER < 931007
        base::TimeDelta::FromMilliseconds(kGroupConnectedWatchDelayMs)
#else
@@ -2201,8 +2201,8 @@ class LeAudioClientImpl : public LeAudioClient {
    LOG_INFO("Schedule auto connect %s ", ADDRESS_TO_LOGGABLE_CSTR(address));
    do_in_main_thread_delayed(
        FROM_HERE,
        base::BindOnce(&LeAudioClientImpl::autoConnect, base::Unretained(this),
                       address),
        base::BindOnce(&LeAudioClientImpl::autoConnect,
                       weak_factory_.GetWeakPtr(), address),
#if BASE_VER < 931007
        base::TimeDelta::FromMilliseconds(kAutoConnectAfterOwnDisconnectDelayMs)
#else
@@ -2241,7 +2241,7 @@ class LeAudioClientImpl : public LeAudioClient {
    do_in_main_thread_delayed(
        FROM_HERE,
        base::BindOnce(&LeAudioClientImpl::recoveryReconnect,
                       base::Unretained(this), address),
                       weak_factory_.GetWeakPtr(), address),
#if BASE_VER < 931007
        base::TimeDelta::FromMilliseconds(kRecoveryReconnectDelayMs)
#else
@@ -2282,7 +2282,7 @@ class LeAudioClientImpl : public LeAudioClient {
    do_in_main_thread_delayed(
        FROM_HERE,
        base::BindOnce(&LeAudioClientImpl::checkIfGroupMember,
                       base::Unretained(this), address),
                       weak_factory_.GetWeakPtr(), address),
#if BASE_VER < 931007
        base::TimeDelta::FromMilliseconds(kCsisGroupMemberDelayMs)
#else
@@ -3030,7 +3030,7 @@ class LeAudioClientImpl : public LeAudioClient {
    do_in_main_thread_delayed(
        FROM_HERE,
        base::BindOnce(&LeAudioClientImpl::restartAttachToTheStream,
                       base::Unretained(this), addr),
                       weak_factory_.GetWeakPtr(), addr),
#if BASE_VER < 931007
        base::TimeDelta::FromMilliseconds(kDeviceAttachDelayMs)
#else
@@ -5452,6 +5452,8 @@ class LeAudioClientImpl : public LeAudioClient {
  uint32_t cached_channel_timestamp_ = 0;
  uint32_t cached_channel_is_left_;

  base::WeakPtrFactory<LeAudioClientImpl> weak_factory_{this};

  void ClientAudioIntefraceRelease() {
    if (le_audio_source_hal_client_) {
      le_audio_source_hal_client_->Stop();