summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2011-01-27 18:07:06 -0800
committer Jason Sams <rjsams@android.com> 2011-01-27 18:08:40 -0800
commit5012a8fe423acf7417d3a64166f6bce06de747b8 (patch)
tree43cfc922a5461b2a742b6fd90e52e37db680c60f
parent74d39bd902c8561153647b19625b32938f38498c (diff)
Fix another barrier bug 3333866
Atomically update put. Change-Id: Id6d4b5c03f5562b3021561e95966a01abd293667
-rw-r--r--libs/rs/rsLocklessFifo.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/rs/rsLocklessFifo.cpp b/libs/rs/rsLocklessFifo.cpp
index 3f8854330acf..70b72783863e 100644
--- a/libs/rs/rsLocklessFifo.cpp
+++ b/libs/rs/rsLocklessFifo.cpp
@@ -100,7 +100,9 @@ void LocklessCommandFifo::commit(uint32_t command, uint32_t sizeInBytes) {
//dumpState("commit 1");
reinterpret_cast<uint16_t *>(mPut)[0] = command;
reinterpret_cast<uint16_t *>(mPut)[1] = sizeInBytes;
- mPut += ((sizeInBytes + 3) & ~3) + 4;
+
+ int32_t s = ((sizeInBytes + 3) & ~3) + 4;
+ android_atomic_add(s, (int32_t *)&mPut);
//dumpState("commit 2");
mSignalToWorker.set();
}