mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-19 05:06:31 +01:00
improved/fixed monitoring_state() logic from chrisg
git-svn-id: svn://localhost/ardour2/branches/3.0@10275 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
c1908086bb
commit
1e23a86599
1 changed files with 31 additions and 19 deletions
|
|
@ -700,8 +700,20 @@ Track::send_silence () const
|
||||||
if ((Config->get_monitoring_model() == SoftwareMonitoring)
|
if ((Config->get_monitoring_model() == SoftwareMonitoring)
|
||||||
&& ((_monitoring & MonitorInput) ||
|
&& ((_monitoring & MonitorInput) ||
|
||||||
(!(_monitoring & MonitorDisk) && (_session.config.get_auto_input () || _diskstream->record_enabled())))){
|
(!(_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;
|
send_silence = false;
|
||||||
} else {
|
} 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;
|
send_silence = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -718,28 +730,26 @@ Track::monitoring_state ()
|
||||||
|
|
||||||
/* roll case */
|
/* roll case */
|
||||||
|
|
||||||
if ((_monitoring & MonitorInput) || // explicitly requested input monitoring
|
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;
|
ms = MonitoringInput;
|
||||||
|
|
||||||
} else {
|
} else if (_monitoring & MonitorDisk) { // explicitly requested disk monitoring
|
||||||
|
|
||||||
ms = MonitorState (0);
|
ms = MonitoringDisk;
|
||||||
}
|
|
||||||
|
|
||||||
/* basically we're looking for monitor_disk || !recording
|
} else if (_diskstream->record_enabled() && _session.actively_recording()) { // Track actually recording
|
||||||
*/
|
|
||||||
|
|
||||||
if ((_monitoring & MonitorDisk) || // explicitly requested disk monitoring
|
ms = MonitoringInput;
|
||||||
(!(_monitoring & MonitorInput) && // input monitoring not requested
|
|
||||||
(!_diskstream->record_enabled() || // NOT record-enabled OR
|
} else if (_diskstream->record_enabled() && !_session.actively_recording() && _session.config.get_auto_input()) { // Track armed but not recording, with auto input enabled
|
||||||
!_session.actively_recording()))) { // session rec-armed OR
|
|
||||||
|
ms = MonitoringInput;
|
||||||
|
|
||||||
|
} else { // Every other state
|
||||||
|
|
||||||
|
ms = MonitoringDisk;
|
||||||
|
|
||||||
ms = MonitorState (ms | MonitoringDisk);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -747,8 +757,10 @@ Track::monitoring_state ()
|
||||||
/* no-roll case */
|
/* no-roll case */
|
||||||
|
|
||||||
if (send_silence()) {
|
if (send_silence()) {
|
||||||
|
|
||||||
ms = MonitoringSilence;
|
ms = MonitoringSilence;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
ms = MonitoringInput;
|
ms = MonitoringInput;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue