Fix crash on out of range MIDI events (though this shouldn't be possible at all....
[ardour.git] / libs / ardour / jack_midi_port.cc
index 7dbb8655f69745b2ce84aeeb702f5bd9c81ad0c0..6d8e4c8c5d24966bcd0770e4b5067b623d98802d 100644 (file)
@@ -25,31 +25,22 @@ JackMidiPort::JackMidiPort (const std::string& name, Flags flgs, MidiBuffer* buf
        , JackPort (name, DataType::MIDI, flgs)
        , BaseMidiPort (name, flgs) 
 {
-       if (buf) {
+       // MIDI ports always need a buffer since jack buffer format is different
+       assert(buf);
 
-               cout << name << " BUFFER" << endl;
-
-               _buffer = buf;
-               _own_buffer = false;
-
-       } else {
-
-               cout << name << " NO BUFFER" << endl;
-
-               /* data space will be provided by JACK */
-               _buffer = new MidiBuffer (0);
-               _own_buffer = true;
-       }
+       _buffer = buf;
+       _own_buffer = false;
 }
 
 void
-JackMidiPort::cycle_start (nframes_t nframes, nframes_t offset_ignored_but_probably_should_not_be)
+JackMidiPort::cycle_start (nframes_t nframes, nframes_t offset)
 {
+       /* FIXME: offset */
+
        _buffer->clear();
        assert(_buffer->size() == 0);
 
        if (_flags & IsOutput) {
-               // no buffer, nothing to do
                return;
        }
 
@@ -71,13 +62,15 @@ JackMidiPort::cycle_start (nframes_t nframes, nframes_t offset_ignored_but_proba
 
        assert(_buffer->size() == event_count);
 
-       if (_buffer->size() > 0)
-               cerr << "MIDIPort got " << event_count << " events." << endl;
+       /*if (_buffer->size() > 0)
+               cerr << "JackMIDIPort got " << event_count << " events (buf " << _buffer << ")" << endl;*/
 }
 
 void
-JackMidiPort::cycle_end (nframes_t nframes, nframes_t offset_ignored_but_probably_should_not_be)
+JackMidiPort::cycle_end (nframes_t nframes, nframes_t offset)
 {
+       /* FIXME: offset */
+
        if (_flags & IsInput) {
                return;
        }
@@ -89,7 +82,7 @@ JackMidiPort::cycle_end (nframes_t nframes, nframes_t offset_ignored_but_probabl
        jack_midi_clear_buffer (jack_buffer);
 
        for (MidiBuffer::iterator i = _buffer->begin(); i != _buffer->end(); ++i) {
-               const MidiEvent& ev = *i;
+               const MIDI::Event& ev = *i;
                // event times should be frames, relative to cycle start
                assert(ev.time() >= 0);
                assert(ev.time() < nframes);