summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sanket Agarwal <sanketa@google.com> 2016-03-30 19:01:16 +0530
committer Andre Eisenbach <eisenbach@google.com> 2016-04-04 21:11:55 +0000
commit17043071a6b076b8c6bb42c14baaa45a8fc6c5fc (patch)
tree82489a63d1748bfd0b7df845460a0246720f4eee
parent2b667cda95ccc79d153e9924912e581166d3ced4 (diff)
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
-rw-r--r--system/btif/src/btif_avrcp_audio_track.cpp19
-rw-r--r--system/btif/src/btif_media_task.c6
2 files changed, 20 insertions, 5 deletions
diff --git a/system/btif/src/btif_avrcp_audio_track.cpp b/system/btif/src/btif_avrcp_audio_track.cpp
index 456b7091c9..73ad6492bc 100644
--- a/system/btif/src/btif_avrcp_audio_track.cpp
+++ b/system/btif/src/btif_avrcp_audio_track.cpp
@@ -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))
diff --git a/system/btif/src/btif_media_task.c b/system/btif/src/btif_media_task.c
index 610dc976a0..5e02803ff5 100644
--- a/system/btif/src/btif_media_task.c
+++ b/system/btif/src/btif_media_task.c
@@ -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
}