summaryrefslogtreecommitdiff
path: root/libs/ardour/track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-10-21 17:33:13 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-10-21 17:33:13 +0000
commit442d807a814bdd04247799bebbe12ed310652ac6 (patch)
treee725d98dd61d9463f4e5101c881761579572e5ab /libs/ardour/track.cc
parentef5950aedf5061e55ed193a260bead9ca290db46 (diff)
tweak Track::monitoring_state() logic once more
git-svn-id: svn://localhost/ardour2/branches/3.0@10271 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r--libs/ardour/track.cc91
1 files changed, 47 insertions, 44 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 108323c6dd..e6d0ae918a 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -709,6 +709,53 @@ Track::send_silence () const
return send_silence;
}
+MonitorState
+Track::monitoring_state ()
+{
+ MonitorState ms = MonitoringSilence;
+
+ if (_session.transport_rolling()) {
+
+ /* roll case */
+
+ if ((_monitoring & MonitorInput) || // explicitly requested input monitoring
+ (!(_monitoring & MonitorDisk) && // disk monitoring not requested
+ (_diskstream->record_enabled() && // record-enabled BUT
+ !_session.actively_recording() && // session NOT rec-armed
+ !_session.config.get_auto_input()))) { // and auto-input is off
+
+ ms = MonitoringInput;
+
+ } else {
+
+ ms = MonitorState (0);
+ }
+
+ /* basically we're looking for monitor_disk || !recording
+ */
+
+ if ((_monitoring & MonitorDisk) || // explicitly requested disk monitoring
+ (!(_monitoring & MonitorInput) && // input monitoring not requested
+ (!_diskstream->record_enabled() || // NOT record-enabled OR
+ !_session.actively_recording()))) { // session rec-armed OR
+
+ ms = MonitorState (ms | MonitoringDisk);
+ }
+
+ } else {
+
+ /* no-roll case */
+
+ if (send_silence()) {
+ ms = MonitoringSilence;
+ } else {
+ ms = MonitoringInput;
+ }
+ }
+
+ return ms;
+}
+
void
Track::maybe_declick (BufferSet& bufs, framecnt_t nframes, int declick)
{
@@ -774,47 +821,3 @@ Track::set_monitoring (MonitorChoice mc)
}
}
-MonitorState
-Track::monitoring_state ()
-{
- MonitorState ms = MonitoringSilence;
-
- if (_session.transport_rolling()) {
-
- /* roll case */
-
- if ((_monitoring & MonitorInput) || // explicitly requested input monitoring
- (!(_monitoring & MonitorDisk) && // disk monitoring not requested
- (_diskstream->record_enabled() && // record-enabled BUT
- !_session.actively_recording() && // session NOT rec-armed
- !_session.config.get_auto_input()))) { // and auto-input is off
-
- ms = MonitoringInput;
-
- } else {
-
- ms = MonitorState (0);
- }
-
- if ((_monitoring & MonitorDisk) || // explicitly requested disk monitoring
- (!(_monitoring & MonitorInput) && // input monitoring not requested
- (!_diskstream->record_enabled() || // NOT record-enabled OR
- (!_session.actively_recording() || // session rec-armed OR
- _session.config.get_auto_input())))) { // auto-input is ON (mon-input while rec-rolling
-
- ms = MonitorState (ms | MonitoringDisk);
- }
-
- } else {
-
- /* no-roll case */
-
- if (send_silence()) {
- ms = MonitoringSilence;
- } else {
- ms = MonitoringInput;
- }
- }
-
- return ms;
-}