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

Commit e5cf7f2b authored by Glenn Kasten's avatar Glenn Kasten Committed by Android (Google) Code Review
Browse files

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

parents 688b0af6 4e26bc68
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -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 {