when a session goes away, deliver silence to all current ports to prevent a horrible screech during cleanup/destruction

git-svn-id: svn://localhost/ardour2/branches/3.0@12806 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2012-06-20 22:24:14 +00:00
parent b8d724d57a
commit 83941f9988

View File

@ -475,21 +475,30 @@ AudioEngine::process_callback (pframes_t nframes)
return 0;
}
if (_session == 0) {
if (!_freewheeling) {
MIDI::Manager::instance()->cycle_start(nframes);
MIDI::Manager::instance()->cycle_end();
}
_processed_frames = next_processed_frames;
return 0;
}
if (session_remove_pending) {
/* perform the actual session removal */
_session = 0;
session_remove_pending = false;
session_removed.signal();
}
if (_session == 0) {
if (!_freewheeling) {
MIDI::Manager::instance()->cycle_start(nframes);
MIDI::Manager::instance()->cycle_end();
boost::shared_ptr<Ports> p = ports.reader();
for (Ports::iterator i = p->begin(); i != p->end(); ++i) {
if (i->second->sends_output()) {
i->second->get_buffer (nframes).silence (nframes);
}
}
}
_processed_frames = next_processed_frames;
return 0;
}