static int
mm_cmp ( mpegts_mux_t *a, mpegts_mux_t *b )
{
- return b->mm_scan_weight - a->mm_scan_weight;
+ int r = b->mm_scan_weight - a->mm_scan_weight;
+ if (r == 0) {
+ if (idnode_is_instance(&a->mm_id, &dvb_mux_dvbs_class) &&
+ idnode_is_instance(&b->mm_id, &dvb_mux_dvbs_class)) {
+ dvb_mux_conf_t *mc1 = &((dvb_mux_t *)a)->lm_tuning;
+ dvb_mux_conf_t *mc2 = &((dvb_mux_t *)b)->lm_tuning;
+ assert(mc1->dmc_fe_type == DVB_TYPE_S);
+ assert(mc2->dmc_fe_type == DVB_TYPE_S);
+ r = (int)mc1->u.dmc_fe_qpsk.polarisation -
+ (int)mc2->u.dmc_fe_qpsk.polarisation;
+ if (r == 0)
+ r = mc1->dmc_fe_freq - mc2->dmc_fe_freq;
+ }
+ }
+ return r;
}
void