take read-lock when saving processor order

This commit is contained in:
Robin Gareus 2016-05-26 15:05:06 +02:00
parent eadc2ca88a
commit 00967a1982

View File

@ -2781,26 +2781,29 @@ Route::state(bool full_state)
node->add_child_nocopy (_pannable->state (full_state));
}
for (i = _processors.begin(); i != _processors.end(); ++i) {
if (!full_state) {
/* template save: do not include internal sends functioning as
aux sends because the chance of the target ID
in the session where this template is used
is not very likely.
{
Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
for (i = _processors.begin(); i != _processors.end(); ++i) {
if (!full_state) {
/* template save: do not include internal sends functioning as
aux sends because the chance of the target ID
in the session where this template is used
is not very likely.
similarly, do not save listen sends which connect to
the monitor section, because these will always be
added if necessary.
*/
boost::shared_ptr<InternalSend> is;
similarly, do not save listen sends which connect to
the monitor section, because these will always be
added if necessary.
*/
boost::shared_ptr<InternalSend> is;
if ((is = boost::dynamic_pointer_cast<InternalSend> (*i)) != 0) {
if (is->role() == Delivery::Listen) {
continue;
if ((is = boost::dynamic_pointer_cast<InternalSend> (*i)) != 0) {
if (is->role() == Delivery::Listen) {
continue;
}
}
}
node->add_child_nocopy((*i)->state (full_state));
}
node->add_child_nocopy((*i)->state (full_state));
}
if (_extra_xml) {