summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsLocklessFifo.h
diff options
context:
space:
mode:
authorJason Sams <rjsams@android.com>2009-06-18 16:58:42 -0700
committerJason Sams <rjsams@android.com>2009-06-18 16:58:42 -0700
commit5f7fc27dce3f0ea0ce7532ee8ecd8a2cd01ec47b (patch)
treea9ca11ef8d57afb2c4055f54513444ae7c3f6d76 /libs/rs/rsLocklessFifo.h
parentf8cd5d99888b7685d0304828a7fa549ddc0632c3 (diff)
downloadframeworks_base-5f7fc27dce3f0ea0ce7532ee8ecd8a2cd01ec47b.zip
frameworks_base-5f7fc27dce3f0ea0ce7532ee8ecd8a2cd01ec47b.tar.gz
frameworks_base-5f7fc27dce3f0ea0ce7532ee8ecd8a2cd01ec47b.tar.bz2
Replace spins with proper pthread conditions.
Diffstat (limited to 'libs/rs/rsLocklessFifo.h')
-rw-r--r--libs/rs/rsLocklessFifo.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/libs/rs/rsLocklessFifo.h b/libs/rs/rsLocklessFifo.h
index ddef382..2f4d5c5 100644
--- a/libs/rs/rsLocklessFifo.h
+++ b/libs/rs/rsLocklessFifo.h
@@ -41,14 +41,32 @@ public:
protected:
+ class Signal {
+ public:
+ Signal();
+ ~Signal();
+
+ bool init();
+
+ void set();
+ void wait();
+
+ protected:
+ bool mSet;
+ pthread_mutex_t mMutex;
+ pthread_cond_t mCondition;
+ };
+
uint8_t * volatile mPut;
uint8_t * volatile mGet;
uint8_t * mBuffer;
uint8_t * mEnd;
uint8_t mSize;
- pthread_mutex_t mMutex;
- pthread_cond_t mCondition;
+ Signal mSignalToWorker;
+ Signal mSignalToControl;
+
+
public:
void * reserve(uint32_t bytes);