Changeset 2508
- Timestamp:
- 02/28/10 10:35:58 (6 months ago)
- Location:
- trunk/raul/raul
- Files:
-
- 2 modified
-
RingBuffer.hpp (modified) (5 diffs)
-
SRSWQueue.hpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/raul/raul/RingBuffer.hpp
r2348 r2508 21 21 #include <cassert> 22 22 #include <cstring> 23 #include <cstdlib> 23 24 #include <iostream> 24 25 #include <glib.h> … … 35 36 class RingBuffer { 36 37 public: 37 38 38 /** @param size Size in bytes. 39 39 */ 40 40 RingBuffer(size_t size) 41 41 : _size(size) 42 , _buf( new T[size])42 , _buf(static_cast<char*>(malloc(size))) 43 43 { 44 44 reset(); … … 48 48 49 49 virtual ~RingBuffer() { 50 delete[] _buf;50 free(_buf); 51 51 } 52 52 … … 100 100 101 101 size_t _size; ///< Size (capacity) in bytes 102 T* _buf; ///< size, event, size, event...102 char* _buf; ///< Contents 103 103 }; 104 104 … … 191 191 { 192 192 if (read_space() < size) { 193 warn << "Attempt to skip past end of MIDI ring buffer" << std::endl;193 warn << "Attempt to skip past end of RingBuffer" << std::endl; 194 194 return false; 195 195 } -
trunk/raul/raul/SRSWQueue.hpp
r2432 r2508 20 20 21 21 #include <cassert> 22 #include <cstdlib>23 22 #include <boost/utility.hpp> 24 23 #include "raul/AtomicInt.hpp" … … 28 27 29 28 /** Realtime-safe single-reader single-writer queue (aka lock-free ringbuffer) 29 * 30 * This is appropriate for a cross-thread queue of fixed size object. If you 31 * need to do variable sized reads and writes, use Raul::RingBuffer instead. 30 32 * 31 33 * Implemented as a dequeue in a fixed array. This is read/write thread-safe, … … 40 42 { 41 43 public: 44 /** @param size Size in number of elements */ 42 45 SRSWQueue(size_t size); 43 46 ~SRSWQueue(); … … 72 75 : _front(0) 73 76 , _back(0) 74 , _size(size +1)75 , _objects( static_cast<T*>(calloc(_size, sizeof(T))))77 , _size(size + 1) 78 , _objects(new T[_size]) 76 79 { 77 80 assert(size > 1); … … 82 85 SRSWQueue<T>::~SRSWQueue() 83 86 { 84 free(_objects);87 delete[] _objects; 85 88 } 86 89
