only reverse propagate solo-by-others-downstream if connections on a Route change, not just configuration changes.
This prevents a scenario where the route has had its solo control's state set from XML, but then we configure the route's output, and invoke output_change_handler(). Without the new conditional, this would check which downstream routes are soloed, find none, and then unset the soloed-by-downstream state of the solo control.
This commit is contained in:
parent
08657843ac
commit
e42c0ff1ea
@ -3383,6 +3383,13 @@ Route::output_change_handler (IOChange change, void * /*src*/)
|
||||
io_changed (); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
if ((change.type & IOChange::ConnectionsChanged)) {
|
||||
|
||||
/* do this ONLY if connections have changed. Configuration
|
||||
* changes do not, by themselves alter solo upstream or
|
||||
* downstream status.
|
||||
*/
|
||||
|
||||
if (_solo_control->soloed_by_others_downstream()) {
|
||||
int sbod = 0;
|
||||
/* checking all all downstream routes for
|
||||
@ -3406,6 +3413,9 @@ Route::output_change_handler (IOChange change, void * /*src*/)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cerr << "computed sbod = " << sbod << endl;
|
||||
|
||||
int delta = sbod - _solo_control->soloed_by_others_downstream();
|
||||
if (delta <= 0) {
|
||||
// do not allow new connections to change implicit solo (no propagation)
|
||||
@ -3426,6 +3436,7 @@ Route::output_change_handler (IOChange change, void * /*src*/)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user