AudioFlinger: Fix memory allocation for client-less tracks am: 1159ffd5e3 am: f242b890c4 am: 24ef54ecb8 am: a35816475b

am: 1ce123cf91

Change-Id: I414a644145a6da9c9fe4e073d97aa07dd0272267
gugelfrei
Andy Hung 7 years ago committed by android-build-merger
commit d06e47540d

@ -143,9 +143,11 @@ AudioFlinger::ThreadBase::TrackBase::TrackBase(
return;
}
} else {
// this syntax avoids calling the audio_track_cblk_t constructor twice
mCblk = (audio_track_cblk_t *) new uint8_t[size];
// assume mCblk != NULL
mCblk = (audio_track_cblk_t *) malloc(size);
if (mCblk == NULL) {
ALOGE("not enough memory for AudioTrack size=%zu", size);
return;
}
}
// construct the shared structure in-place.
@ -237,10 +239,9 @@ AudioFlinger::ThreadBase::TrackBase::~TrackBase()
// delete the proxy before deleting the shared memory it refers to, to avoid dangling reference
delete mServerProxy;
if (mCblk != NULL) {
mCblk->~audio_track_cblk_t(); // destroy our shared-structure.
if (mClient == 0) {
delete mCblk;
} else {
mCblk->~audio_track_cblk_t(); // destroy our shared-structure.
free(mCblk);
}
}
mCblkMemory.clear(); // free the shared memory before releasing the heap it belongs to

Loading…
Cancel
Save