summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-08-10 01:22:45 +0000
committerDavid Robillard <d@drobilla.net>2006-08-10 01:22:45 +0000
commitab6f1ed9bafa869648b6e94ee5186ff317b32c3e (patch)
treed61dba7f9b6f1ae755803afc4b79bcff06a36005 /libs/ardour/track.cc
parent38c7d34d8c449c7ce5f7da9575c24e60c6b31b1a (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.cc21
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;
}