diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/transport_master.h | 5 | ||||
-rw-r--r-- | libs/ardour/ltc_slave.cc | 17 | ||||
-rw-r--r-- | libs/ardour/session_ltc.cc | 2 | ||||
-rw-r--r-- | libs/ardour/transport_master.cc | 8 |
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 (<C_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 |