diff options
author | David Robillard <d@drobilla.net> | 2006-08-10 01:22:45 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-08-10 01:22:45 +0000 |
commit | ab6f1ed9bafa869648b6e94ee5186ff317b32c3e (patch) | |
tree | d61dba7f9b6f1ae755803afc4b79bcff06a36005 /libs/ardour/track.cc | |
parent | 38c7d34d8c449c7ce5f7da9575c24e60c6b31b1a (diff) |
Merged with trunk R776
git-svn-id: svn://localhost/ardour2/branches/midi@777 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r-- | libs/ardour/track.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 3b3b705a87..f81ef9de4d 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -31,6 +31,7 @@ #include <ardour/audioplaylist.h> #include <ardour/panner.h> #include <ardour/utils.h> +#include <ardour/connection.h> #include "i18n.h" @@ -146,6 +147,18 @@ Track::record_enabled () const { return _diskstream->record_enabled (); } + +bool +Track::can_record() +{ + bool will_record = true; + for (size_t i = 0; i < _inputs.size() && will_record; i++) { + if (!_inputs[i]->connected()) + will_record = false; + } + + return will_record; +} void Track::set_record_enable (bool yn, void *src) @@ -159,8 +172,13 @@ Track::set_record_enable (bool yn, void *src) return; } - /* keep track of the meter point as it was before we rec-enabled */ + // 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; } @@ -206,6 +224,7 @@ Track::set_name (string str, void *src) if ((ret = IO::set_name (str, src)) == 0) { _session.save_state (""); + _session.save_history(); } return ret; } |