From f30b50495a3045cb72ad61352b6b9fb83cd3da98 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 24 Nov 2016 13:39:57 +0100 Subject: [PATCH] mpegts scan: put tuned muxes to the end-of-queue, fixes #4088 --- src/input/mpegts.h | 1 + src/input/mpegts/mpegts_mux.c | 1 + src/input/mpegts/mpegts_network_scan.c | 7 +++++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 5672810cd..b1412decf 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -433,6 +433,7 @@ struct mpegts_mux int mm_tsid_checks; int mm_tsid_accept_zero_value; tvhlog_limit_t mm_tsid_loglimit; + int64_t mm_start_monoclock; int mm_update_pids_flag; mtimer_t mm_update_pids_timer; diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index e452d71dc..b0ab04cd4 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -262,6 +262,7 @@ mpegts_mux_instance_start /* Start */ tvhdebug(LS_MPEGTS, "%s - started", buf); + mm->mm_start_monoclock = mclk(); mi->mi_started_mux(mi, mmi); /* Event handler */ diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index 45f8ef21b..31e5e0bf4 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -35,8 +35,11 @@ static int mm_cmp ( mpegts_mux_t *a, mpegts_mux_t *b ) { int r = b->mm_scan_weight - a->mm_scan_weight; - if (r == 0) - return mpegts_mux_compare(a, b); + if (r == 0) { + r = MINMAX(-1, 1, b->mm_start_monoclock - a->mm_start_monoclock); + if (r == 0) + return mpegts_mux_compare(a, b); + } return r; } -- 2.47.3