diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-10-21 23:14:00 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-10-21 23:14:00 +0000 |
commit | 1e23a865995407a94998ee3ba3ff6a434d04b36e (patch) | |
tree | 1cc1785b4985e6ea426d5ffd64061aed4702a59c /libs/ardour/track.cc | |
parent | c1908086bb023e4039849a671b7b70c88b9f49f5 (diff) |
improved/fixed monitoring_state() logic from chrisg
git-svn-id: svn://localhost/ardour2/branches/3.0@10275 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/track.cc')
-rw-r--r-- | libs/ardour/track.cc | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 228ed31786..734c8f994d 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -700,8 +700,20 @@ Track::send_silence () const if ((Config->get_monitoring_model() == SoftwareMonitoring) && ((_monitoring & MonitorInput) || (!(_monitoring & MonitorDisk) && (_session.config.get_auto_input () || _diskstream->record_enabled())))){ + + DEBUG_TRACE (DEBUG::Monitor, + string_compose ("%1: no roll, use silence = FALSE, monitoring choice %2 recenable %3 sRA %4 autoinput %5\n", + name(), enum_2_string (_monitoring), + _diskstream->record_enabled(), _session.actively_recording(), + _session.config.get_auto_input())); + send_silence = false; } else { + DEBUG_TRACE (DEBUG::Monitor, + string_compose ("%1: no roll, use silence = TRUE, monitoring choice %2 recenable %3 sRA %4 autoinput %5\n", + name(), enum_2_string (_monitoring), + _diskstream->record_enabled(), _session.actively_recording(), + _session.config.get_auto_input())); send_silence = true; } } @@ -717,29 +729,27 @@ Track::monitoring_state () if (_session.transport_rolling()) { /* roll case */ + + if (_monitoring & MonitorInput) { // explicitly requested input monitoring + + ms = MonitoringInput; - 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 + } else if (_monitoring & MonitorDisk) { // explicitly requested disk monitoring + + ms = MonitoringDisk; + } else if (_diskstream->record_enabled() && _session.actively_recording()) { // Track actually recording + ms = MonitoringInput; - } else { + } else if (_diskstream->record_enabled() && !_session.actively_recording() && _session.config.get_auto_input()) { // Track armed but not recording, with auto input enabled + + ms = MonitoringInput; - ms = MonitorState (0); - } + } else { // Every other state + + ms = MonitoringDisk; - /* 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 { @@ -747,8 +757,10 @@ Track::monitoring_state () /* no-roll case */ if (send_silence()) { + ms = MonitoringSilence; } else { + ms = MonitoringInput; } } |