still do cycle_start() & cycle_end() calls when freewheeling

git-svn-id: svn://localhost/ardour2/branches/3.0@3440 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2008-06-03 12:14:59 +00:00
parent 9a37f4a7be
commit 0a8e5093c3

View File

@ -321,6 +321,13 @@ AudioEngine::process_callback (nframes_t nframes)
return 0;
}
boost::shared_ptr<Ports> p = ports.reader();
// Prepare ports (ie read data if necessary)
for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
(*i)->cycle_start (nframes, 0);
}
if (_freewheeling) {
/* emit the Freewheel signal and stop freewheeling in the event of trouble */
if (Freewheel (nframes)) {
@ -328,18 +335,11 @@ AudioEngine::process_callback (nframes_t nframes)
_freewheeling = false;
jack_set_freewheel (_jack, false);
}
return 0;
}
boost::shared_ptr<Ports> p = ports.reader();
// Prepare ports (ie read data if necessary)
for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
(*i)->cycle_start (nframes, 0);
}
if (session) {
session->process (nframes);
} else {
if (session) {
session->process (nframes);
}
}
// Finalize ports (ie write data if necessary)
@ -348,6 +348,10 @@ AudioEngine::process_callback (nframes_t nframes)
(*i)->cycle_end (nframes, 0);
}
if (_freewheeling) {
return 0;
}
if (!_running) {
_processed_frames = next_processed_frames;
return 0;