stopped/monitor/state change bug fix from 2.X
git-svn-id: svn://localhost/ardour2/branches/3.0@6528 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -2520,10 +2520,24 @@ Route::no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (session_state_changing || !_active || n_inputs() == ChanCount::ZERO) {
|
||||
if (!_active || n_inputs() == ChanCount::ZERO) {
|
||||
silence (nframes);
|
||||
return 0;
|
||||
}
|
||||
if (session_state_changing) {
|
||||
if (_session.transport_speed() != 0.0f) {
|
||||
/* we're rolling but some state is changing (e.g. our diskstream contents)
|
||||
so we cannot use them. Be silent till this is over.
|
||||
|
||||
XXX note the absurdity of ::no_roll() being called when we ARE rolling!
|
||||
*/
|
||||
silence (nframes);
|
||||
return 0;
|
||||
}
|
||||
/* we're really not rolling, so we're either delivery silence or actually
|
||||
monitoring, both of which are safe to do while session_state_changing is true.
|
||||
*/
|
||||
}
|
||||
|
||||
_amp->apply_gain_automation (false);
|
||||
passthru (start_frame, end_frame, nframes, 0);
|
||||
|
||||
@@ -247,11 +247,18 @@ Track::no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
|
||||
}
|
||||
|
||||
if (session_state_changing) {
|
||||
if (_session.transport_speed() != 0.0f) {
|
||||
/* we're rolling but some state is changing (e.g. our diskstream contents)
|
||||
so we cannot use them. Be silent till this is over.
|
||||
|
||||
/* XXX is this safe to do against transport state changes? */
|
||||
|
||||
passthru_silence (start_frame, end_frame, nframes, 0);
|
||||
return 0;
|
||||
XXX note the absurdity of ::no_roll() being called when we ARE rolling!
|
||||
*/
|
||||
passthru_silence (start_frame, end_frame, nframes, 0, false);
|
||||
return 0;
|
||||
}
|
||||
/* we're really not rolling, so we're either delivery silence or actually
|
||||
monitoring, both of which are safe to do while session_state_changing is true.
|
||||
*/
|
||||
}
|
||||
|
||||
diskstream()->check_record_status (start_frame, nframes, can_record);
|
||||
|
||||
Reference in New Issue
Block a user