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

Commit 17043071 authored by Sanket Agarwal's avatar Sanket Agarwal Committed by Andre Eisenbach
Browse files

A2DP_SINK: initialize track handle to null

- initialize track handle to null
- prevent invoking audiotrack API in case handle is null

Bug: 27613411

Change-Id: I1a8637fd2cbb3012b29c1930f978100e7f0c58d8
parent 2b667cda
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ void *BtifAvrcpAudioTrackCreate(int trackFreq, int channelType)
    assert(track != NULL);

    BtifAvrcpAudioTrack *trackHolder = new BtifAvrcpAudioTrack;
    assert(trackHolder);
    assert(trackHolder != NULL);
    trackHolder->track = track;

    if (trackHolder->track->initCheck() != 0)
@@ -62,8 +62,9 @@ void *BtifAvrcpAudioTrackCreate(int trackFreq, int channelType)

void BtifAvrcpAudioTrackStart(void *handle)
{
    assert(handle != NULL);
    BtifAvrcpAudioTrack *trackHolder = static_cast<BtifAvrcpAudioTrack*>(handle);
    assert(trackHolder);
    assert(trackHolder != NULL);
    assert(trackHolder->track != NULL);
    LOG_VERBOSE(LOG_TAG, "%s Track.cpp: btStartTrack", __func__);
    trackHolder->track->start();
@@ -71,6 +72,10 @@ void BtifAvrcpAudioTrackStart(void *handle)

void BtifAvrcpAudioTrackStop(void *handle)
{
    if (handle == NULL) {
        LOG_DEBUG(LOG_TAG, "%s handle is null.", __func__);
        return;
    }
    BtifAvrcpAudioTrack *trackHolder = static_cast<BtifAvrcpAudioTrack*>(handle);
    if (trackHolder != NULL && trackHolder->track != NULL) {
        LOG_VERBOSE(LOG_TAG, "%s Track.cpp: btStartTrack", __func__);
@@ -80,6 +85,10 @@ void BtifAvrcpAudioTrackStop(void *handle)

void BtifAvrcpAudioTrackDelete(void *handle)
{
    if (handle == NULL) {
        LOG_DEBUG(LOG_TAG, "%s handle is null.", __func__);
        return;
    }
    BtifAvrcpAudioTrack *trackHolder = static_cast<BtifAvrcpAudioTrack*>(handle);
    if (trackHolder != NULL && trackHolder->track != NULL) {
        LOG_VERBOSE(LOG_TAG, "%s Track.cpp: btStartTrack", __func__);
@@ -97,6 +106,10 @@ void BtifAvrcpAudioTrackDelete(void *handle)

void BtifAvrcpAudioTrackPause(void *handle)
{
    if (handle == NULL) {
        LOG_DEBUG(LOG_TAG, "%s handle is null.", __func__);
        return;
    }
    BtifAvrcpAudioTrack *trackHolder = static_cast<BtifAvrcpAudioTrack*>(handle);
    if (trackHolder != NULL && trackHolder->track != NULL) {
        LOG_VERBOSE(LOG_TAG, "%s Track.cpp: btStartTrack", __func__);
@@ -108,7 +121,7 @@ void BtifAvrcpAudioTrackPause(void *handle)
int BtifAvrcpAudioTrackWriteData(void *handle, void *audioBuffer, int bufferlen)
{
    BtifAvrcpAudioTrack *trackHolder = static_cast<BtifAvrcpAudioTrack*>(handle);
    assert(trackHolder);
    assert(trackHolder != NULL);
    assert(trackHolder->track != NULL);
    int retval = -1;
#if (defined(DUMP_PCM_DATA) && (DUMP_PCM_DATA == TRUE))
+4 −2
Original line number Diff line number Diff line
@@ -900,7 +900,8 @@ void btif_a2dp_on_init(void)
{
#ifdef USE_AUDIO_TRACK
    btif_media_cb.rx_audio_focus_state = BTIF_MEDIA_FOCUS_NOT_GRANTED;
#endif // USE_AUDIO_TRACK
    btif_media_cb.audio_track = NULL;
#endif
}


@@ -959,7 +960,7 @@ void btif_a2dp_setup_codec(void)

void btif_a2dp_on_idle(void)
{
    APPL_TRACE_EVENT("## ON A2DP IDLE ##");
    APPL_TRACE_EVENT("## ON A2DP IDLE ## peer_sep = %d", btif_media_cb.peer_sep);
    if (btif_media_cb.peer_sep == AVDT_TSEP_SNK)
    {
        /* Make sure media task is stopped */
@@ -2149,6 +2150,7 @@ static void btif_media_task_aa_handle_clear_track (void)
#ifdef USE_AUDIO_TRACK
    BtifAvrcpAudioTrackStop(btif_media_cb.audio_track);
    BtifAvrcpAudioTrackDelete(btif_media_cb.audio_track);
    btif_media_cb.audio_track = NULL;
#endif
}