X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Ftrack.cc;h=0fcf831f4688c3494e6392d0a6c9af199855bff4;hb=d6b36a13a127d9b152cfe12d596ea862773f9923;hp=7cdca70d3ba7941dd1a98920c12a0530f368132d;hpb=1de584961a746090583a4c97251f25924d6e03ad;p=ardour.git diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 7cdca70d3b..0fcf831f46 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -21,6 +21,7 @@ #include "ardour/debug.h" #include "ardour/delivery.h" #include "ardour/diskstream.h" +#include "ardour/event_type_map.h" #include "ardour/io_processor.h" #include "ardour/meter.h" #include "ardour/monitor_control.h" @@ -66,13 +67,13 @@ Track::init () boost::shared_ptr rp (shared_from_this()); boost::shared_ptr rt = boost::dynamic_pointer_cast (rp); - _record_enable_control.reset (new RecordEnableControl (_session, X_("recenable"), *this)); + _record_enable_control.reset (new RecordEnableControl (_session, EventTypeMap::instance().to_symbol (RecEnableAutomation), *this)); add_control (_record_enable_control); - _record_safe_control.reset (new RecordSafeControl (_session, X_("recsafe"), *this)); + _record_safe_control.reset (new RecordSafeControl (_session, EventTypeMap::instance().to_symbol (RecSafeAutomation), *this)); add_control (_record_safe_control); - _monitoring_control.reset (new MonitorControl (_session, X_("monitoring"), *this)); + _monitoring_control.reset (new MonitorControl (_session, EventTypeMap::instance().to_symbol (MonitoringAutomation), *this)); add_control (_monitoring_control); _session.config.ParameterChanged.connect_same_thread (*this, boost::bind (&Track::parameter_changed, this, _1)); @@ -293,8 +294,12 @@ Track::set_name (const string& str) { bool ret; - if (_record_enable_control->get_value() && _session.actively_recording()) { - /* this messes things up if done while recording */ + if (str.empty ()) { + return false; + } + + if (_record_enable_control->get_value()) { + /* when re-arm'ed the file (named after the track) is already ready to rolll */ return false; } @@ -929,6 +934,17 @@ Track::monitoring_state () const return MonitoringDisk; } + switch (_session.config.get_session_monitoring ()) { + case MonitorDisk: + return MonitoringDisk; + break; + case MonitorInput: + return MonitoringInput; + break; + default: + break; + } + /* This is an implementation of the truth table in doc/monitor_modes.pdf; I don't think it's ever going to be too pretty too look at. */ @@ -944,9 +960,11 @@ Track::monitoring_state () const * time, but just to keep the semantics the same as they were before * sept 26th 2012, we differentiate between the cases where punch is * enabled and those where it is not. + * + * rg: I suspect this is not the case: monitoring may differ */ - if (_session.config.get_punch_in() || _session.config.get_punch_out()) { + if (_session.config.get_punch_in() || _session.config.get_punch_out() || _session.preroll_record_punch_enabled ()) { session_rec = _session.actively_recording (); } else { session_rec = _session.get_record_enabled();