Prevent removal of route inputs when the plugins cannot be configured with the new number. Rework locking so that the process lock is held from the point that a route input is removed until after the processors are reconfigured; fixes #3548.

git-svn-id: svn://localhost/ardour2/branches/3.0@8089 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington
2010-11-25 23:46:24 +00:00
parent 28c004f4fb
commit 54cbc45a5a
13 changed files with 335 additions and 158 deletions

View File

@@ -801,6 +801,7 @@ ProcessorBox::choose_insert ()
_route->add_processor (processor, _placement);
}
/* Caller must not hold process lock */
void
ProcessorBox::choose_send ()
{
@@ -813,6 +814,7 @@ ProcessorBox::choose_send ()
/* XXX need processor lock on route */
try {
Glib::Mutex::Lock lm (AudioEngine::instance()->process_lock());
send->output()->ensure_io (outs, false, this);
} catch (AudioEngine::PortRegistrationFailure& err) {
error << string_compose (_("Cannot set up new send: %1"), err.what()) << endmsg;