13
0

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:
Paul Davis 2010-01-21 14:32:22 +00:00
parent 2c3556ab31
commit 55b63cb572
2 changed files with 26 additions and 5 deletions

View File

@ -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);

View File

@ -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);