move process lock taking to avoid deadlock when connecting ports
git-svn-id: svn://localhost/ardour2/branches/3.0@8104 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
c542d5421d
commit
7df2aa24c9
@ -136,7 +136,6 @@ IOSelector::set_state (ARDOUR::BundleChannel c[2], bool s)
|
|||||||
ARDOUR::Bundle::PortList const & our_ports = c[_ours].bundle->channel_ports (c[_ours].channel);
|
ARDOUR::Bundle::PortList const & our_ports = c[_ours].bundle->channel_ports (c[_ours].channel);
|
||||||
ARDOUR::Bundle::PortList const & other_ports = c[_other].bundle->channel_ports (c[_other].channel);
|
ARDOUR::Bundle::PortList const & other_ports = c[_other].bundle->channel_ports (c[_other].channel);
|
||||||
|
|
||||||
Glib::Mutex::Lock lm (AudioEngine::instance()->process_lock());
|
|
||||||
|
|
||||||
for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) {
|
for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) {
|
||||||
for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) {
|
for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) {
|
||||||
@ -145,12 +144,16 @@ IOSelector::set_state (ARDOUR::BundleChannel c[2], bool s)
|
|||||||
if (!f) {
|
if (!f) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s) {
|
{
|
||||||
_io->connect (f, *j, 0);
|
Glib::Mutex::Lock lm (AudioEngine::instance()->process_lock());
|
||||||
} else {
|
|
||||||
_io->disconnect (f, *j, 0);
|
if (s) {
|
||||||
}
|
_io->connect (f, *j, 0);
|
||||||
|
} else {
|
||||||
|
_io->disconnect (f, *j, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user