Merged with trunk R992.
[ardour.git] / libs / ardour / track.cc
index 49578a7d045a1760a48e6f1fc9bf244b6335658d..053a8662563131a9cc5b31413f7f56a255e0ec2e 100644 (file)
@@ -41,7 +41,6 @@ using namespace PBD;
 
 Track::Track (Session& sess, string name, Route::Flag flag, TrackMode mode, DataType default_type)
        : Route (sess, name, 1, -1, -1, -1, flag, default_type)
-       , _diskstream (0)
        ,  _rec_enable_control (*this)
 {
        _declickable = true;
@@ -52,7 +51,6 @@ Track::Track (Session& sess, string name, Route::Flag flag, TrackMode mode, Data
 
 Track::Track (Session& sess, const XMLNode& node, DataType default_type)
        : Route (sess, "to be renamed", 0, 0, -1, -1, Route::Flag(0), default_type)
-       , _diskstream (0)
        , _rec_enable_control (*this)
 {
        _freeze_record.state = NoFreeze;
@@ -62,9 +60,6 @@ Track::Track (Session& sess, const XMLNode& node, DataType default_type)
 
 Track::~Track ()
 {
-       if (_diskstream) {
-               _diskstream->unref();
-       }
 }
 
 void
@@ -89,11 +84,11 @@ void
 Track::toggle_monitor_input ()
 {
        for (PortSet::iterator i = _inputs.begin(); i != _inputs.end(); ++i) {
-               (*i)->request_monitor_input(!(*i)->monitoring_input());
+               i->ensure_monitor_input(!i->monitoring_input());
        }
 }
 
-jack_nframes_t
+ARDOUR::nframes_t
 Track::update_total_latency ()
 {
        _own_latency = 0;
@@ -124,7 +119,7 @@ Track::freeze_state() const
 }
 
 Track::RecEnableControllable::RecEnableControllable (Track& s)
-       : track (s)
+       : Controllable (X_("recenable")), track (s)
 {
 }
 
@@ -153,7 +148,7 @@ Track::can_record()
 {
        bool will_record = true;
        for (PortSet::iterator i = _inputs.begin(); i != _inputs.end() && will_record; ++i) {
-               if (!(*i)->connected())
+               if (!i->connected())
                        will_record = false;
        }
 
@@ -172,12 +167,6 @@ Track::set_record_enable (bool yn, void *src)
                return;
        }
 
-       // Do not set rec enabled if the track can't record.
-       if (yn && !can_record()) {
-               error << string_compose( _("Can not arm track '%1'. Check the input connections"), name() ) << endmsg;
-               return;
-       }
-
        /* keep track of the meter point as it was before we rec-enabled */
        if (!_diskstream->record_enabled()) {
                _saved_meter_point = _meter_point;
@@ -224,13 +213,12 @@ Track::set_name (string str, void *src)
 
        if ((ret = IO::set_name (str, src)) == 0) {
                _session.save_state ("");
-                _session.save_history();
        }
        return ret;
 }
 
 void
-Track::set_latency_delay (jack_nframes_t longest_session_latency)
+Track::set_latency_delay (nframes_t longest_session_latency)
 {
        Route::set_latency_delay (longest_session_latency);
        _diskstream->set_roll_delay (_roll_delay);