summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/transport_master.h5
-rw-r--r--libs/ardour/ltc_slave.cc17
-rw-r--r--libs/ardour/session_ltc.cc2
-rw-r--r--libs/ardour/transport_master.cc8
4 files changed, 20 insertions, 12 deletions
diff --git a/libs/ardour/ardour/transport_master.h b/libs/ardour/ardour/transport_master.h
index 9e745cbef5..c7c0c65175 100644
--- a/libs/ardour/ardour/transport_master.h
+++ b/libs/ardour/ardour/transport_master.h
@@ -443,9 +443,9 @@ protected:
XMLNode port_node;
- PBD::ScopedConnection port_connection;
- bool connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn);
+ virtual void connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn);
+ PBD::ScopedConnection port_connection;
PBD::ScopedConnection backend_connection;
virtual void register_properties ();
@@ -613,6 +613,7 @@ private:
void resync_latency (bool);
void parse_timecode_offset ();
void parameter_changed (std::string const& p);
+ void connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string, boost::weak_ptr<ARDOUR::Port>, std::string, bool);
bool did_reset_tc_format;
Timecode::TimecodeFormat saved_tc_format;
diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc
index bc0a8fb724..1fa3c741c3 100644
--- a/libs/ardour/ltc_slave.cc
+++ b/libs/ardour/ltc_slave.cc
@@ -66,9 +66,8 @@ LTC_TransportMaster::LTC_TransportMaster (std::string const & name)
{
memset (&prev_frame, 0, sizeof(LTCFrameExt));
- resync_latency (false);
-
AudioEngine::instance()->Xrun.connect_same_thread (port_connection, boost::bind (&LTC_TransportMaster::resync_xrun, this));
+
}
void
@@ -126,6 +125,18 @@ LTC_TransportMaster::~LTC_TransportMaster()
}
void
+LTC_TransportMaster::connection_handler (boost::weak_ptr<ARDOUR::Port> w0, std::string n0, boost::weak_ptr<ARDOUR::Port> w1, std::string n1, bool con)
+{
+ TransportMaster::connection_handler(w0, n0, w1, n1, con);
+
+ boost::shared_ptr<Port> p0 = w0.lock ();
+ boost::shared_ptr<Port> p1 = w1.lock ();
+ if (p0 == _port || p1 == _port) {
+ resync_latency (false);
+ }
+}
+
+void
LTC_TransportMaster::parse_timecode_offset()
{
if (_session) {
@@ -190,11 +201,11 @@ LTC_TransportMaster::resync_latency (bool playback)
if (playback) {
return;
}
- DEBUG_TRACE (DEBUG::LTC, "LTC resync_latency()\n");
uint32_t old = ltc_slave_latency.max;
if (_port) {
_port->get_connected_latency_range (ltc_slave_latency, false);
+ DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC resync_latency: %1\n", ltc_slave_latency.max));
}
if (old != ltc_slave_latency.max) {
sync_lock_broken = false;
diff --git a/libs/ardour/session_ltc.cc b/libs/ardour/session_ltc.cc
index 5c3da63f17..79f1264303 100644
--- a/libs/ardour/session_ltc.cc
+++ b/libs/ardour/session_ltc.cc
@@ -107,10 +107,10 @@ Session::ltc_tx_resync_latency (bool playback)
if (deletion_in_progress() || !playback) {
return;
}
- DEBUG_TRACE (DEBUG::TXLTC, "resync latency\n");
boost::shared_ptr<Port> ltcport = ltc_output_port();
if (ltcport) {
ltcport->get_connected_latency_range(ltc_out_latency, true);
+ DEBUG_TRACE (DEBUG::TXLTC, string_compose ("resync latency: %1\n", ltc_out_latency.max));
}
}
diff --git a/libs/ardour/transport_master.cc b/libs/ardour/transport_master.cc
index c0a9e4e02c..1794fca354 100644
--- a/libs/ardour/transport_master.cc
+++ b/libs/ardour/transport_master.cc
@@ -163,11 +163,11 @@ TransportMaster::set_name (std::string const & str)
}
}
-bool
+void
TransportMaster::connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string name1, boost::weak_ptr<ARDOUR::Port>, std::string name2, bool yn)
{
if (!_port) {
- return false;
+ return;
}
const std::string fqn = ARDOUR::AudioEngine::instance()->make_port_name_non_relative (_port->name());
@@ -188,11 +188,7 @@ TransportMaster::connection_handler (boost::weak_ptr<ARDOUR::Port>, std::string
}
PropertyChanged (Properties::connected);
-
- return true;
}
-
- return false;
}
bool