Ensure, that inputs with higher priorities are preferred.
The decision line is:
1) re-use input if the in-use mux matches
2) use a free input with highest priority
3) cancel the mux/input with smallest weight and use it for new
return si;
}
- /* Forced or Idle */
+ /* Forced */
TAILQ_FOREACH(si, sil, si_link)
- if(si->si_weight <= 0 && si->si_error == 0)
+ if(si->si_weight < 0 && si->si_error == 0)
break;
- /* Bump someone */
+ /* Idle */
if (!si) {
TAILQ_FOREACH_REVERSE(si, sil, service_instance_list, si_link)
+ if (si->si_weight == 0 && si->si_error == 0)
+ break;
+ }
+
+ /* Bump someone */
+ if (!si) {
+ TAILQ_FOREACH(si, sil, si_link)
if (weight > si->si_weight && si->si_error == 0)
break;
}