AudioFlinger: Fix memory allocation for client-less tracks am: 1159ffd5e3 am: f242b890c4 am: 24ef54ecb8 am: a35816475b am: 1ce123cf91 am: d06e47540d am: 103b751e55 am: 0851e2f4c6 am: aff0808bcf am: 109247df7a

am: a92d05fc1e

Change-Id: I73340a812c24ea421d68fa88f6b18cfa4867a0a5
gugelfrei
Andy Hung 7 years ago committed by android-build-merger
commit 85c8828a32

@ -141,9 +141,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.
@ -235,10 +237,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