diff options
| author | Jason Sams <rjsams@android.com> | 2009-06-18 16:58:42 -0700 |
|---|---|---|
| committer | Jason Sams <rjsams@android.com> | 2009-06-18 16:58:42 -0700 |
| commit | 5f7fc27dce3f0ea0ce7532ee8ecd8a2cd01ec47b (patch) | |
| tree | a9ca11ef8d57afb2c4055f54513444ae7c3f6d76 /libs/rs/rsLocklessFifo.h | |
| parent | f8cd5d99888b7685d0304828a7fa549ddc0632c3 (diff) | |
| download | frameworks_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.h | 22 |
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); |
