13
0

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:
Paul Davis 2017-02-07 16:49:11 +01:00
parent 08657843ac
commit e42c0ff1ea

View File

@ -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