summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_diskstream.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-05-12 02:40:48 +0000
committerDavid Robillard <d@drobilla.net>2008-05-12 02:40:48 +0000
commit8ca72c4eca3a712f5368680ba0fbce5beb831324 (patch)
tree65b29e7fe4bb0d28f8a113bf014e831d98c7d50b /libs/ardour/ardour/midi_diskstream.h
parenta76e2128efea2d48fd873e95fd7c0f0b6f6135b3 (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.h25
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: