diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-08-13 13:24:05 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-08-13 13:24:05 -0400 |
commit | e87424f514d9c8bfbd9851ce338061d693464363 (patch) | |
tree | 98c4156f9e78e3b2801dcad16dd0a37d6dc1da57 /gtk2_ardour/midi_tracer.cc | |
parent | a5a75d5e0d4fb9f2c7db7cf3747da2314c2f9586 (diff) |
re-enable MIDI tracing for ARDOUR::MidiPort
Diffstat (limited to 'gtk2_ardour/midi_tracer.cc')
-rw-r--r-- | gtk2_ardour/midi_tracer.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc index fee339d126..ba116d39aa 100644 --- a/gtk2_ardour/midi_tracer.cc +++ b/gtk2_ardour/midi_tracer.cc @@ -164,16 +164,25 @@ MidiTracer::port_changed () return; } + /* The inheritance heirarchy makes this messy. AsyncMIDIPort has two + * available MIDI::Parsers what we could connect to, ::self_parser() + * (from ARDOUR::MidiPort) and ::parser() from MIDI::Port. One day, + * this mess will all go away ... + */ + boost::shared_ptr<AsyncMIDIPort> async = boost::dynamic_pointer_cast<AsyncMIDIPort> (p); if (!async) { - /* pure ARDOUR::MidiPort ... cannot currently attach to it because it - * has no Parser. - */ - return; + + boost::shared_ptr<ARDOUR::MidiPort> mp = boost::dynamic_pointer_cast<ARDOUR::MidiPort> (p); + + if (mp) { + mp->self_parser().any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); + } + + } else { + async->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } - - async->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } void |