summaryrefslogtreecommitdiff
path: root/libs/pbd3/pbd/ringbufferNPT.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd3/pbd/ringbufferNPT.h')
-rw-r--r--libs/pbd3/pbd/ringbufferNPT.h52
1 files changed, 26 insertions, 26 deletions
diff --git a/libs/pbd3/pbd/ringbufferNPT.h b/libs/pbd3/pbd/ringbufferNPT.h
index ccfcae42a5..fee2efce3d 100644
--- a/libs/pbd3/pbd/ringbufferNPT.h
+++ b/libs/pbd3/pbd/ringbufferNPT.h
@@ -21,12 +21,12 @@
#ifndef ringbuffer_npt_h
#define ringbuffer_npt_h
-#include <sys/mman.h>
-#include <pbd/atomic.h>
+//#include <sys/mman.h>
+
+#include <glib.h>
+
+/* ringbuffer class where the element size is not required to be a power of two */
-/** Ringbuffer class where the element size is not required to be a
- * power of two.
- */
template<class T>
class RingBufferNPT
{
@@ -44,14 +44,14 @@ class RingBufferNPT
void reset () {
/* !!! NOT THREAD SAFE !!! */
- atomic_set (&write_ptr, 0);
- atomic_set (&read_ptr, 0);
+ g_atomic_int_set (&write_ptr, 0);
+ g_atomic_int_set (&read_ptr, 0);
}
void set (size_t r, size_t w) {
/* !!! NOT THREAD SAFE !!! */
- atomic_set (&write_ptr, w);
- atomic_set (&read_ptr, r);
+ g_atomic_int_set (&write_ptr, w);
+ g_atomic_int_set (&read_ptr, r);
}
size_t read (T *dest, size_t cnt);
@@ -66,22 +66,22 @@ class RingBufferNPT
void get_write_vector (rw_vector *);
void decrement_read_ptr (size_t cnt) {
- atomic_set (&read_ptr, (atomic_read(&read_ptr) - cnt) % size);
+ g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) - cnt) % size);
}
void increment_read_ptr (size_t cnt) {
- atomic_set (&read_ptr, (atomic_read(&read_ptr) + cnt) % size);
+ g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) + cnt) % size);
}
void increment_write_ptr (size_t cnt) {
- atomic_set (&write_ptr, (atomic_read(&write_ptr) + cnt) % size);
+ g_atomic_int_set (&write_ptr, (g_atomic_int_get(&write_ptr) + cnt) % size);
}
size_t write_space () {
size_t w, r;
- w = atomic_read (&write_ptr);
- r = atomic_read (&read_ptr);
+ w = g_atomic_int_get (&write_ptr);
+ r = g_atomic_int_get (&read_ptr);
if (w > r) {
return ((r - w + size) % size) - 1;
@@ -95,8 +95,8 @@ class RingBufferNPT
size_t read_space () {
size_t w, r;
- w = atomic_read (&write_ptr);
- r = atomic_read (&read_ptr);
+ w = g_atomic_int_get (&write_ptr);
+ r = g_atomic_int_get (&read_ptr);
if (w > r) {
return w - r;
@@ -106,8 +106,8 @@ class RingBufferNPT
}
T *buffer () { return buf; }
- size_t get_write_ptr () const { return atomic_read (&write_ptr); }
- size_t get_read_ptr () const { return atomic_read (&read_ptr); }
+ size_t get_write_ptr () const { return g_atomic_int_get (&write_ptr); }
+ size_t get_read_ptr () const { return g_atomic_int_get (&read_ptr); }
size_t bufsize () const { return size; }
protected:
@@ -126,7 +126,7 @@ RingBufferNPT<T>::read (T *dest, size_t cnt)
size_t n1, n2;
size_t priv_read_ptr;
- priv_read_ptr=atomic_read(&read_ptr);
+ priv_read_ptr=g_atomic_int_get(&read_ptr);
if ((free_cnt = read_space ()) == 0) {
return 0;
@@ -152,7 +152,7 @@ RingBufferNPT<T>::read (T *dest, size_t cnt)
priv_read_ptr = n2;
}
- atomic_set(&read_ptr, priv_read_ptr);
+ g_atomic_int_set(&read_ptr, priv_read_ptr);
return to_read;
}
@@ -165,7 +165,7 @@ RingBufferNPT<T>::write (T *src, size_t cnt)
size_t n1, n2;
size_t priv_write_ptr;
- priv_write_ptr=atomic_read(&write_ptr);
+ priv_write_ptr=g_atomic_int_get(&write_ptr);
if ((free_cnt = write_space ()) == 0) {
return 0;
@@ -191,7 +191,7 @@ RingBufferNPT<T>::write (T *src, size_t cnt)
priv_write_ptr = n2;
}
- atomic_set(&write_ptr, priv_write_ptr);
+ g_atomic_int_set(&write_ptr, priv_write_ptr);
return to_write;
}
@@ -202,8 +202,8 @@ RingBufferNPT<T>::get_read_vector (RingBufferNPT<T>::rw_vector *vec)
size_t cnt2;
size_t w, r;
- w = atomic_read (&write_ptr);
- r = atomic_read (&read_ptr);
+ w = g_atomic_int_get (&write_ptr);
+ r = g_atomic_int_get (&read_ptr);
if (w > r) {
free_cnt = w - r;
@@ -241,8 +241,8 @@ RingBufferNPT<T>::get_write_vector (RingBufferNPT<T>::rw_vector *vec)
size_t cnt2;
size_t w, r;
- w = atomic_read (&write_ptr);
- r = atomic_read (&read_ptr);
+ w = g_atomic_int_get (&write_ptr);
+ r = g_atomic_int_get (&read_ptr);
if (w > r) {
free_cnt = ((r - w + size) % size) - 1;