From: Jaroslav Kysela Date: Fri, 18 Mar 2016 10:21:51 +0000 (+0100) Subject: mpegts scan: sort DVB-S muxes (for slave tuners) X-Git-Tag: v4.2.1~842 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0cc8b0becc061630510991b7b0e315ff173983db;p=thirdparty%2Ftvheadend.git mpegts scan: sort DVB-S muxes (for slave tuners) --- diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index 445e54b4e..1bc1f9bea 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -34,7 +34,21 @@ mpegts_network_scan_notify ( mpegts_mux_t *mm ) 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