diff options
Diffstat (limited to 'libs/pbd3/pbd')
-rw-r--r-- | libs/pbd3/pbd/abstract_ui.cc | 2 | ||||
-rw-r--r-- | libs/pbd3/pbd/abstract_ui.h | 5 | ||||
-rw-r--r-- | libs/pbd3/pbd/basename.h | 4 | ||||
-rw-r--r-- | libs/pbd3/pbd/error.h | 18 | ||||
-rw-r--r-- | libs/pbd3/pbd/pool.h | 9 | ||||
-rw-r--r-- | libs/pbd3/pbd/ringbuffer.h | 47 | ||||
-rw-r--r-- | libs/pbd3/pbd/ringbufferNPT.h | 52 | ||||
-rw-r--r-- | libs/pbd3/pbd/transmitter.h | 1 |
8 files changed, 71 insertions, 67 deletions
diff --git a/libs/pbd3/pbd/abstract_ui.cc b/libs/pbd3/pbd/abstract_ui.cc index 06cf1665a3..0e34787a2d 100644 --- a/libs/pbd3/pbd/abstract_ui.cc +++ b/libs/pbd3/pbd/abstract_ui.cc @@ -29,7 +29,7 @@ AbstractUI<RequestObject>::register_thread_with_request_count (pthread_t thread_ RequestBuffer* b = new RequestBuffer (num_requests); { - PBD::LockMonitor lm (request_buffer_map_lock, __LINE__, __FILE__); + Glib::Mutex::Lock lm (request_buffer_map_lock); request_buffers[thread_id] = b; } diff --git a/libs/pbd3/pbd/abstract_ui.h b/libs/pbd3/pbd/abstract_ui.h index 98f077cb48..f80db7bf1a 100644 --- a/libs/pbd3/pbd/abstract_ui.h +++ b/libs/pbd3/pbd/abstract_ui.h @@ -27,8 +27,9 @@ #include <sigc++/sigc++.h> +#include <glibmm/thread.h> + #include <pbd/receiver.h> -#include <pbd/lockmonitor.h> #include <pbd/ringbufferNPT.h> #include <pbd/base_ui.h> @@ -62,7 +63,7 @@ class AbstractUI : public BaseUI typedef typename RequestBuffer::rw_vector RequestBufferVector; typedef typename std::map<pthread_t,RequestBuffer*>::iterator RequestBufferMapIterator; - PBD::Lock request_buffer_map_lock; + Glib::Mutex request_buffer_map_lock; typedef std::map<pthread_t,RequestBuffer*> RequestBufferMap; RequestBufferMap request_buffers; pthread_key_t thread_request_buffer_key; diff --git a/libs/pbd3/pbd/basename.h b/libs/pbd3/pbd/basename.h index 01f40b6b6a..35aebe166c 100644 --- a/libs/pbd3/pbd/basename.h +++ b/libs/pbd3/pbd/basename.h @@ -6,9 +6,7 @@ namespace PBD { -extern char *basename (const char *); -extern std::string basename (const std::string); -extern std::string basename_nosuffix (const std::string); +extern std::string basename_nosuffix (const std::string&); }; diff --git a/libs/pbd3/pbd/error.h b/libs/pbd3/pbd/error.h index cb822e6210..4136f02ee2 100644 --- a/libs/pbd3/pbd/error.h +++ b/libs/pbd3/pbd/error.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1998-99 Paul Barton-Davis + Copyright (C) 1998-2006 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,14 +17,16 @@ $Id$ */ -#ifndef __libmisc_error_h__ -#define __libmisc_error_h__ +#ifndef __libpbd_error_h__ +#define __libpbd_error_h__ #include "transmitter.h" -extern Transmitter error; -extern Transmitter info; -extern Transmitter warning; -extern Transmitter fatal; +namespace PBD { + extern Transmitter error; + extern Transmitter info; + extern Transmitter warning; + extern Transmitter fatal; +} -#endif // __libmisc_error_h__ +#endif // __libpbd_error_h__ diff --git a/libs/pbd3/pbd/pool.h b/libs/pbd3/pbd/pool.h index c8e9740acd..f8e19e72fb 100644 --- a/libs/pbd3/pbd/pool.h +++ b/libs/pbd3/pbd/pool.h @@ -23,7 +23,9 @@ #include <vector> #include <string> -#include <pthread.h> + +#include <glibmm/thread.h> + #include <pbd/ringbuffer.h> class Pool @@ -53,7 +55,7 @@ class SingleAllocMultiReleasePool : public Pool virtual void release (void *); private: - pthread_mutex_t lock; + Glib::Mutex* m_lock; }; @@ -67,8 +69,7 @@ class MultiAllocSingleReleasePool : public Pool virtual void release (void *); private: - pthread_mutex_t lock; + Glib::Mutex* m_lock; }; - #endif // __qm_pool_h__ diff --git a/libs/pbd3/pbd/ringbuffer.h b/libs/pbd3/pbd/ringbuffer.h index d276d19086..1d9c9b04e3 100644 --- a/libs/pbd3/pbd/ringbuffer.h +++ b/libs/pbd3/pbd/ringbuffer.h @@ -21,8 +21,9 @@ #ifndef ringbuffer_h #define ringbuffer_h -#include <sys/mman.h> -#include <pbd/atomic.h> +//#include <sys/mman.h> + +#include <glib.h> template<class T> class RingBuffer @@ -47,14 +48,14 @@ class RingBuffer 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); @@ -69,22 +70,22 @@ class RingBuffer void get_write_vector (rw_vector *); void decrement_read_ptr (size_t cnt) { - atomic_set (&read_ptr, (atomic_read(&read_ptr) - cnt) & size_mask); + g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) - cnt) & size_mask); } void increment_read_ptr (size_t cnt) { - atomic_set (&read_ptr, (atomic_read(&read_ptr) + cnt) & size_mask); + g_atomic_int_set (&read_ptr, (g_atomic_int_get(&read_ptr) + cnt) & size_mask); } void increment_write_ptr (size_t cnt) { - atomic_set (&write_ptr, (atomic_read(&write_ptr) + cnt) & size_mask); + g_atomic_int_set (&write_ptr, (g_atomic_int_get(&write_ptr) + cnt) & size_mask); } 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_mask) - 1; @@ -98,8 +99,8 @@ class RingBuffer 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; @@ -109,8 +110,8 @@ class RingBuffer } 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: @@ -130,7 +131,7 @@ RingBuffer<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; @@ -156,7 +157,7 @@ RingBuffer<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; } @@ -170,7 +171,7 @@ RingBuffer<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; @@ -196,7 +197,7 @@ RingBuffer<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; } @@ -208,8 +209,8 @@ RingBuffer<T>::get_read_vector (RingBuffer<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; @@ -248,8 +249,8 @@ RingBuffer<T>::get_write_vector (RingBuffer<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_mask) - 1; 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; diff --git a/libs/pbd3/pbd/transmitter.h b/libs/pbd3/pbd/transmitter.h index 07fc266bce..357cb9965f 100644 --- a/libs/pbd3/pbd/transmitter.h +++ b/libs/pbd3/pbd/transmitter.h @@ -104,6 +104,7 @@ endmsg (std::ostream &ostr) return ostr; } + extern "C" { void pbd_c_error (const char *); } #endif // __libmisc_transmitter_h__ |