diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/audioengine.cc | 16 | ||||
-rw-r--r-- | libs/ardour/playlist.cc | 2 |
2 files changed, 15 insertions, 3 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 8629a5c0df..d7bbe369fe 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -342,6 +342,18 @@ AudioEngine::process_callback (nframes_t nframes) boost::shared_ptr<Ports> p = ports.reader(); + for (Ports::iterator i = p->begin(); i != p->end(); ++i) { + + /* Only run cycle_start() on output ports, because + inputs must be done in the correct processing order, + which requires interleaving with route processing. + */ + + if ((*i)->sends_output()) { + (*i)->cycle_start (nframes, 0); + } + } + if (_freewheeling) { /* emit the Freewheel signal and stop freewheeling in the event of trouble */ if (Freewheel (nframes)) { @@ -509,7 +521,9 @@ AudioEngine::set_session (Session *s) boost::shared_ptr<Ports> p = ports.reader(); for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - (*i)->cycle_start (blocksize, 0); + if ((*i)->sends_output()) { + (*i)->cycle_start (blocksize, 0); + } } s->process (blocksize); diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 65cb8637d5..fbe9990933 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -467,7 +467,6 @@ void Playlist::add_region (boost::shared_ptr<Region> region, nframes_t position, float times) { RegionLock rlock (this); - delay_notifications(); times = fabs (times); int itimes = (int) floor (times); @@ -503,7 +502,6 @@ Playlist::add_region (boost::shared_ptr<Region> region, nframes_t position, floa possibly_splice_unlocked (position, (pos + length) - position, boost::shared_ptr<Region>()); - release_notifications (); } void |