diff options
author | Carl Hetherington <carl@carlh.net> | 2011-10-17 20:35:55 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-10-17 20:35:55 +0000 |
commit | c7d2497e2badd3fabd29fe3b1c55978f276bbbf9 (patch) | |
tree | 1e7c0128c7c694a68525b85a2065459b4f04dc05 /libs/ardour/buffer_set.cc | |
parent | 6fc823aca88dfe2e1dee1ceab81edf1a674640af (diff) |
Discard MIDI when sending to the monitor bus. Fixes
#4372.
git-svn-id: svn://localhost/ardour2/branches/3.0@10212 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/buffer_set.cc')
-rw-r--r-- | libs/ardour/buffer_set.cc | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index 6061d360f9..663b5e8ca0 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -383,6 +383,21 @@ BufferSet::VSTBuffer::push_back (Evoral::MIDIEvent<framepos_t> const & ev) #endif /* VST_SUPPORT */ +/** Copy buffers of one type from `in' to this BufferSet */ +void +BufferSet::read_from (const BufferSet& in, framecnt_t nframes, DataType type) +{ + assert (available().get (type) >= in.count().get (type)); + + BufferSet::iterator o = begin (type); + for (BufferSet::const_iterator i = in.begin (type); i != in.end (type); ++i, ++o) { + o->read_from (*i, nframes); + } + + _count.set (type, in.count().get (type)); +} + +/** Copy buffers of all types from `in' to this BufferSet */ void BufferSet::read_from (const BufferSet& in, framecnt_t nframes) { @@ -390,13 +405,8 @@ BufferSet::read_from (const BufferSet& in, framecnt_t nframes) // Copy all buffers 1:1 for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { - BufferSet::iterator o = begin(*t); - for (BufferSet::const_iterator i = in.begin(*t); i != in.end(*t); ++i, ++o) { - o->read_from (*i, nframes); - } + read_from (in, nframes, *t); } - - set_count(in.count()); } void |