From d7db3f757fde92126ef9886370ce604992b7e974 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 1 Aug 2007 20:50:09 +0000 Subject: Better MidiModel command framework, ready to go for all your canvas editing needs. Rewrote MidiEvent to be a well-behaved self-contained object that optionally owns it's buffer, has proper copying semantics, etc. Fixed crazy bugs triggered by adding lots of events with varying times to a region. Speed up initial session display significantly (don't redraw each MIDI region tons of times, though still happens more than once and can use fixing...). git-svn-id: svn://localhost/ardour2/trunk@2213 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/midi_buffer.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'libs/ardour/midi_buffer.cc') diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index 5b7c789ba0..07ae2abab0 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -90,11 +90,11 @@ MidiBuffer::read_from(const Buffer& src, nframes_t nframes, nframes_t offset) // FIXME: slow for (size_t i=0; i < src.size(); ++i) { const MidiEvent& ev = msrc[i]; - if (ev.time >= offset && ev.time < offset+nframes) { - //cerr << "MidiBuffer::read_from got event, " << ev.time << endl; + if (ev.time() >= offset && ev.time() < offset+nframes) { + //cerr << "MidiBuffer::read_from got event, " << ev.time() << endl; push_back(ev); } else { - //cerr << "MidiBuffer event out of range, " << ev.time << endl; + //cerr << "MidiBuffer event out of range, " << ev.time() << endl; } } @@ -117,9 +117,9 @@ MidiBuffer::push_back(const MidiEvent& ev) Byte* const write_loc = _data + (_size * MAX_EVENT_SIZE); - memcpy(write_loc, ev.buffer, ev.size); + memcpy(write_loc, ev.buffer(), ev.size()); _events[_size] = ev; - _events[_size].buffer = write_loc; + _events[_size].set_buffer(write_loc); ++_size; //cerr << "MidiBuffer: pushed, size = " << _size << endl; @@ -146,9 +146,9 @@ MidiBuffer::push_back(const jack_midi_event_t& ev) Byte* const write_loc = _data + (_size * MAX_EVENT_SIZE); memcpy(write_loc, ev.buffer, ev.size); - _events[_size].time = (double)ev.time; - _events[_size].size = ev.size; - _events[_size].buffer = write_loc; + _events[_size].time() = (double)ev.time; + _events[_size].size() = ev.size; + _events[_size].set_buffer(write_loc); ++_size; //cerr << "MidiBuffer: pushed, size = " << _size << endl; @@ -176,9 +176,9 @@ MidiBuffer::reserve(double time, size_t size) Byte* const write_loc = _data + (_size * MAX_EVENT_SIZE); - _events[_size].time = time; - _events[_size].size = size; - _events[_size].buffer = write_loc; + _events[_size].time() = time; + _events[_size].size() = size; + _events[_size].set_buffer(write_loc); ++_size; //cerr << "MidiBuffer: reserved, size = " << _size << endl; @@ -238,7 +238,7 @@ MidiBuffer::merge(const MidiBuffer& a, const MidiBuffer& b) const MidiEvent& a_ev = a[a_index]; const MidiEvent& b_ev = b[b_index]; - if (a_ev.time <= b_ev.time) { + if (a_ev.time() <= b_ev.time()) { push_back(a_ev); ++a_index; } else { -- cgit v1.2.3