Mercurial > audlegacy-plugins
diff src/neon/rb.h @ 2151:9a9f406374c6
- Update ring buffer code to newer version
author | Ralf Ertzinger <ralf@skytale.net> |
---|---|
date | Sun, 04 Nov 2007 14:04:37 +0100 |
parents | dc83901850df |
children | b73ea297d197 |
line wrap: on
line diff
--- a/src/neon/rb.h Sat Nov 03 01:23:56 2007 +0200 +++ b/src/neon/rb.h Sun Nov 04 14:04:37 2007 +0100 @@ -17,7 +17,21 @@ #ifndef _RB_H #define _RB_H +#ifdef _RB_USE_GLIB +#include <glib.h> + +typedef GMutex rb_mutex_t; +#define _RB_LOCK(L) g_mutex_lock(L) +#define _RB_UNLOCK(L) g_mutex_unlock(L) + +#else #include <pthread.h> + +typedef pthread_mutex_t rb_mutex_t; +#define _RB_LOCK(L) pthread_mutex_lock(L) +#define _RB_UNLOCK(L) pthread_mutex_unlock(L) +#endif + #include <stdlib.h> #ifdef RB_DEBUG @@ -27,7 +41,8 @@ #endif struct ringbuf { - pthread_mutex_t lock; + rb_mutex_t* lock; + char _free_lock; char* buf; char* end; char* wp; @@ -38,11 +53,13 @@ }; int init_rb(struct ringbuf* rb, unsigned int size); +int init_rb_with_lock(struct ringbuf* rb, unsigned int size, rb_mutex_t* lock); int write_rb(struct ringbuf* rb, void* buf, unsigned int size); int read_rb(struct ringbuf* rb, void* buf, unsigned int size); int read_rb_locked(struct ringbuf* rb, void* buf, unsigned int size); void reset_rb(struct ringbuf* rb); unsigned int free_rb(struct ringbuf* rb); +unsigned int free_rb_locked(struct ringbuf* rb); unsigned int used_rb(struct ringbuf* rb); void destroy_rb(struct ringbuf* rb);