diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-05-16 20:54:24 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-05-16 20:54:24 +0000 |
commit | 0c25b2aa8e173a96060adc52a34ecd43da79c305 (patch) | |
tree | 595dd5ccb469aa31651a9914c5bbc1e8c74b1692 /libs/ardour/ardour/midi_ring_buffer.h | |
parent | 8ab37dd700a50673ec71492558f7b5d701cf29db (diff) |
* Fixed crash on closing MIDI automation tracks, because ARDOUR::Parameter::operator< violated strict weak ordering,
which is necessary for std::set to work correctly
* few small style guide corrections
git-svn-id: svn://localhost/ardour2/branches/3.0@3363 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_ring_buffer.h')
-rw-r--r-- | libs/ardour/ardour/midi_ring_buffer.h | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/libs/ardour/ardour/midi_ring_buffer.h b/libs/ardour/ardour/midi_ring_buffer.h index baa8e9d948..76cefd57a1 100644 --- a/libs/ardour/ardour/midi_ring_buffer.h +++ b/libs/ardour/ardour/midi_ring_buffer.h @@ -141,13 +141,15 @@ template<typename T> bool MidiRingBufferBase<T>::full_peek(size_t size, T* dst) { - if (read_space() < size) + if (read_space() < size) { return false; + } const size_t read_size = peek(size, dst); - if (read_size < size) + if (read_size < size) { peek(size - read_size, dst + read_size); + } return true; } @@ -181,13 +183,15 @@ template<typename T> bool MidiRingBufferBase<T>::full_read(size_t size, T* dst) { - if (read_space() < size) + if (read_space() < size) { return false; + } const size_t read_size = read(size, dst); - if (read_size < size) + if (read_size < size) { read(size - read_size, dst + read_size); + } return true; } @@ -292,11 +296,14 @@ inline bool MidiRingBuffer::read(double* time, size_t* size, Byte* buf) { bool success = MidiRingBufferBase<Byte>::full_read(sizeof(double), (Byte*)time); - if (success) + + if (success) { success = MidiRingBufferBase<Byte>::full_read(sizeof(size_t), (Byte*)size); - if (success) + } + if (success) { success = MidiRingBufferBase<Byte>::full_read(*size, buf); - + } + return success; } @@ -308,8 +315,9 @@ inline bool MidiRingBuffer::read_prefix(double* time, size_t* size) { bool success = MidiRingBufferBase<Byte>::full_read(sizeof(double), (Byte*)time); - if (success) + if (success) { success = MidiRingBufferBase<Byte>::full_read(sizeof(size_t), (Byte*)size); + } return success; } @@ -338,8 +346,9 @@ MidiRingBuffer::write(double time, size_t size, const Byte* buf) // Don't write event if it doesn't match channel filter if (is_channel_event(buf[0]) && get_channel_mode() == FilterChannels) { Byte channel = buf[0] & 0x0F; - if ( !(get_channel_mask() & (1L << channel)) ) + if ( !(get_channel_mask() & (1L << channel)) ) { return 0; + } } if (write_space() < (sizeof(double) + sizeof(size_t) + size)) { @@ -388,8 +397,9 @@ MidiRingBuffer::read(MidiBuffer& dst, nframes_t start, nframes_t end, nframes_t full_peek(sizeof(double), (Byte*)&ev_time); - if (ev_time > end) + if (ev_time > end) { break; + } bool success = MidiRingBufferBase<Byte>::full_read(sizeof(double), (Byte*)&ev_time); if (success) { |