diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h index 6dd55f998d..87fb8cdde5 100644 --- a/libs/ardour/ardour/midiport_manager.h +++ b/libs/ardour/ardour/midiport_manager.h @@ -91,7 +91,7 @@ public: void set_midi_port_states (const XMLNodeList&); std::list get_midi_port_states () const; - PBD::Signal0 PortsChanged; + void set_public_latency (bool playback); protected: /* asynchronously handled ports: ARDOUR::AsyncMIDIPort */ diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index d9050b44b0..ecdb8c9903 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -139,3 +139,27 @@ MidiPortManager::vkbd_output_port () const { return boost::dynamic_pointer_cast (_vkbd_out); } + +void +MidiPortManager::set_public_latency (bool playback) +{ + typedef std::list > PortList; + PortList pl; + + pl.push_back (_mtc_output_port); + pl.push_back (_midi_clock_output_port); + pl.push_back (_mmc_in); + pl.push_back (_mmc_out); + pl.push_back (_vkbd_out); + pl.push_back (_scene_out); + pl.push_back (_scene_in); + + for (PortList::const_iterator p = pl.begin(); p != pl.end(); ++p) { + LatencyRange range; + (*p)->get_connected_latency_range (range, playback); + /* Ports always align to worst-case latency */ + range.min = range.max; + (*p)->set_private_latency_range (range, playback); + (*p)->set_public_latency_range (range, playback); + } +}