diff options
author | David Robillard <d@drobilla.net> | 2008-05-12 02:40:48 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-05-12 02:40:48 +0000 |
commit | 8ca72c4eca3a712f5368680ba0fbce5beb831324 (patch) | |
tree | 65b29e7fe4bb0d28f8a113bf014e831d98c7d50b /libs/ardour/ardour/midi_diskstream.h | |
parent | a76e2128efea2d48fd873e95fd7c0f0b6f6135b3 (diff) |
Fix various MIDI corruption bugs.
Re-enable MIDI CC controller bars and other immediate output (hans commented out, tsk tsk).
Write channel mode as textual enumeration instead of magic number.
Better atomic (almost) channel mode switching on MIDI ring buffer (was a possible, if unlikely, source of corruption).
Handle some cases of broken MIDI, and oversized events, more gracefully.
git-svn-id: svn://localhost/ardour2/branches/3.0@3335 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_diskstream.h')
-rw-r--r-- | libs/ardour/ardour/midi_diskstream.h | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/libs/ardour/ardour/midi_diskstream.h b/libs/ardour/ardour/midi_diskstream.h index f52f66dc6d..3e8e9c4156 100644 --- a/libs/ardour/ardour/midi_diskstream.h +++ b/libs/ardour/ardour/midi_diskstream.h @@ -90,28 +90,27 @@ class MidiDiskstream : public Diskstream void set_note_mode (NoteMode m); - void set_channel_mask(uint16_t channel_mask) { - _playback_buf->set_channel_mask(channel_mask); - _capture_buf->set_channel_mask(channel_mask); - } - uint16_t get_channel_mask() { uint16_t playback_mask = _playback_buf->get_channel_mask(); +#ifndef NDEBUG uint16_t capture_mask = _capture_buf->get_channel_mask(); assert(playback_mask == capture_mask); +#endif return playback_mask; } - void set_force_channel(int8_t force_channel) { - _playback_buf->set_force_channel(force_channel); - _capture_buf->set_force_channel(force_channel); + void set_channel_mode(ChannelMode mode, uint16_t mask) { + _playback_buf->set_channel_mode(mode, mask); + _capture_buf->set_channel_mode(mode, mask); } - int8_t get_force_channel() { - int8_t playback_force_channel = _playback_buf->get_force_channel(); - int8_t capture_force_channel = _capture_buf->get_force_channel(); - assert(playback_force_channel == capture_force_channel); - return playback_force_channel; + ChannelMode get_channel_mode() { + ChannelMode playback_mode = _playback_buf->get_channel_mode(); +#ifndef NDEBUG + ChannelMode capture_mode = _capture_buf->get_channel_mode(); + assert(playback_mode == capture_mode); +#endif + return playback_mode; } protected: |