From bd1220a46db9fe909d09c08139cfb61ba98ec9f3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 1 Sep 2006 07:38:55 +0000 Subject: Fixes for IO port adding/removing Working audio sends/port inserts Send gain, panning MIDI sends working (maybe port inserts too?) Buffer/Port fixes (related to silence) Metering bug fixes git-svn-id: svn://localhost/ardour2/branches/midi@883 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/buffer.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libs/ardour/buffer.cc') diff --git a/libs/ardour/buffer.cc b/libs/ardour/buffer.cc index 7b99f2a900..d4a370685c 100644 --- a/libs/ardour/buffer.cc +++ b/libs/ardour/buffer.cc @@ -39,6 +39,7 @@ Buffer::create(DataType type, size_t capacity) AudioBuffer::AudioBuffer(size_t capacity) : Buffer(DataType::AUDIO, capacity) + , _owns_data(false) , _data(NULL) { _size = capacity; // For audio buffers, size = capacity (always) @@ -49,10 +50,8 @@ AudioBuffer::AudioBuffer(size_t capacity) posix_memalign((void**)&_data, 16, sizeof(Sample) * capacity); #endif assert(_data); - clear(); _owns_data = true; - } else { - _owns_data = false; + clear(); } } @@ -108,13 +107,15 @@ MidiBuffer::read_from(const Buffer& src, jack_nframes_t nframes, jack_nframes_t clear(); assert(_size == 0); - // FIXME: This is embarrassingly slow. branch branch branch + // FIXME: slow for (size_t i=0; i < src.size(); ++i) { const MidiEvent& ev = msrc[i]; if (ev.time >= offset && ev.time < offset+nframes) { push_back(ev); } } + + _silent = src.silent(); } @@ -140,6 +141,8 @@ MidiBuffer::push_back(const MidiEvent& ev) //cerr << "MidiBuffer: pushed, size = " << _size << endl; + _silent = false; + return true; } @@ -154,6 +157,7 @@ MidiBuffer::silence(jack_nframes_t dur, jack_nframes_t offset) memset(_events, 0, sizeof(MidiEvent) * _capacity); memset(_data, 0, sizeof(RawMidi) * _capacity * MAX_EVENT_SIZE); _size = 0; + _silent = true; } -- cgit v1.2.3