Merge "Fix race in buffer ref counting." into honeycomb

This commit is contained in:
Glenn Kasten
2011-01-12 09:34:37 -08:00
committed by Android (Google) Code Review

View File

@@ -26,17 +26,10 @@
#include <media/stagefright/MetaData.h>
#include <ui/GraphicBuffer.h>
#include <sys/atomics.h>
namespace android {
// XXX make this truly atomic.
static int atomic_add(int *value, int delta) {
int prev_value = *value;
*value += delta;
return prev_value;
}
MediaBuffer::MediaBuffer(void *data, size_t size)
: mObserver(NULL),
mNextBuffer(NULL),
@@ -84,7 +77,7 @@ void MediaBuffer::release() {
return;
}
int prevCount = atomic_add(&mRefCount, -1);
int prevCount = __atomic_dec(&mRefCount);
if (prevCount == 1) {
if (mObserver == NULL) {
delete this;
@@ -104,7 +97,7 @@ void MediaBuffer::claim() {
}
void MediaBuffer::add_ref() {
atomic_add(&mRefCount, 1);
(void) __atomic_inc(&mRefCount);
}
void *MediaBuffer::data() const {