summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/rs/rsLocklessFifo.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/rs/rsLocklessFifo.cpp b/libs/rs/rsLocklessFifo.cpp
index eb2af1cda757..3f8854330acf 100644
--- a/libs/rs/rsLocklessFifo.cpp
+++ b/libs/rs/rsLocklessFifo.cpp
@@ -76,7 +76,8 @@ uint32_t LocklessCommandFifo::getFreeSpace() const {
}
bool LocklessCommandFifo::isEmpty() const {
- return mPut == mGet;
+ uint32_t p = android_atomic_acquire_load((int32_t *)&mPut);
+ return ((uint8_t *)p) == mGet;
}
@@ -155,7 +156,9 @@ const void * LocklessCommandFifo::get(uint32_t *command, uint32_t *bytesData) {
void LocklessCommandFifo::next() {
uint32_t bytes = reinterpret_cast<const uint16_t *>(mGet)[1];
- mGet += ((bytes + 3) & ~3) + 4;
+
+ android_atomic_add(((bytes + 3) & ~3) + 4, (int32_t *)&mGet);
+ //mGet += ((bytes + 3) & ~3) + 4;
if (isEmpty()) {
mSignalToControl.set();
}