+#endif
+}
+
+void
+Port::set_latency_range (jack_latency_range_t& range, jack_latency_callback_mode_t mode) const
+{
+#if HAVE_JACK_NEW_LATENCY
+ if (!jack_port_set_latency_range) {
+ return;
+ }
+
+ jack_port_set_latency_range (_jack_port, mode, &range);
+#endif
+}
+
+void
+Port::get_connected_latency_range (jack_latency_range_t& range, jack_latency_callback_mode_t mode) const
+{
+#if HAVE_JACK_NEW_LATENCY
+ if (!jack_port_get_latency_range) {
+ return;
+ }
+
+ vector<string> connections;
+ jack_client_t* jack = _engine->jack();
+
+ if (!jack) {
+ range.min = 0;
+ range.max = 0;
+ PBD::warning << _("get_connected_latency_range() called while disconnected from JACK") << endmsg;
+ return;
+ }
+
+ get_connections (connections);
+
+ if (!connections.empty()) {
+
+ range.min = ~((jack_nframes_t) 0);
+ range.max = 0;
+
+ for (vector<string>::iterator c = connections.begin(); c != connections.end(); ++c) {
+ jack_port_t* remote_port = jack_port_by_name (_engine->jack(), (*c).c_str());
+ jack_latency_range_t lr;
+
+ if (remote_port) {
+ jack_port_get_latency_range (remote_port, mode, &lr);
+ range.min = min (range.min, lr.min);
+ range.min = max (range.max, lr.max);
+ }
+ }
+
+ } else {
+
+ range.min = 0;
+ range.max = 0;
+ }
+#endif /* HAVE_JACK_NEW_LATENCY */