summaryrefslogtreecommitdiff
path: root/libs/midi++2/jack_midiport.cc
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-11-22 15:40:19 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-11-22 15:40:19 +0000
commit2f07b77503f01e75970241e3aa4c9b6fc723a83f (patch)
tree6689c54d7d37509e92cb52ef514f466280096b79 /libs/midi++2/jack_midiport.cc
parent5de817c2509b3f8ab35e1aea7292e84ca51037ab (diff)
* added XML deserialisation for control and program changes
* added pointer checks * fixed typos in comments git-svn-id: svn://localhost/ardour2/branches/3.0@4234 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2/jack_midiport.cc')
-rw-r--r--libs/midi++2/jack_midiport.cc38
1 files changed, 21 insertions, 17 deletions
diff --git a/libs/midi++2/jack_midiport.cc b/libs/midi++2/jack_midiport.cc
index 6f3661d937..0464649989 100644
--- a/libs/midi++2/jack_midiport.cc
+++ b/libs/midi++2/jack_midiport.cc
@@ -60,28 +60,32 @@ JACK_MidiPort::cycle_start (nframes_t nframes)
_last_read_index = 0;
_last_write_timestamp = 0;
- // output
- void *buffer = jack_port_get_buffer (_jack_output_port, nframes);
- jack_midi_clear_buffer (buffer);
- flush (buffer);
+ if (_jack_output_port != 0) {
+ // output
+ void *buffer = jack_port_get_buffer (_jack_output_port, nframes);
+ jack_midi_clear_buffer (buffer);
+ flush (buffer);
+ }
- // input
- void* jack_buffer = jack_port_get_buffer(_jack_input_port, nframes);
- const nframes_t event_count = jack_midi_get_event_count(jack_buffer);
+ if (_jack_input_port != 0) {
+ // input
+ void* jack_buffer = jack_port_get_buffer(_jack_input_port, nframes);
+ const nframes_t event_count = jack_midi_get_event_count(jack_buffer);
- jack_midi_event_t ev;
+ jack_midi_event_t ev;
- for (nframes_t i=0; i < event_count; ++i) {
+ for (nframes_t i=0; i < event_count; ++i) {
- jack_midi_event_get (&ev, jack_buffer, i);
+ jack_midi_event_get (&ev, jack_buffer, i);
- if (input_parser) {
- for (size_t i = 0; i < ev.size; i++) {
- // the midi events here are used for MIDI clock only
- input_parser->set_midi_clock_timestamp(ev.time + jack_last_frame_time(_jack_client));
- input_parser->scanner (ev.buffer[i]);
- }
- }
+ if (input_parser) {
+ for (size_t i = 0; i < ev.size; i++) {
+ // the midi events here are used for MIDI clock only
+ input_parser->set_midi_clock_timestamp(ev.time + jack_last_frame_time(_jack_client));
+ input_parser->scanner (ev.buffer[i]);
+ }
+ }
+ }
}
}