]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts scan: put tuned muxes to the end-of-queue, fixes #4088
authorJaroslav Kysela <perex@perex.cz>
Thu, 24 Nov 2016 12:39:57 +0000 (13:39 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 24 Nov 2016 12:39:57 +0000 (13:39 +0100)
src/input/mpegts.h
src/input/mpegts/mpegts_mux.c
src/input/mpegts/mpegts_network_scan.c

index 5672810cdc1b6ec66e9fc91500c0bc10209c6b6e..b1412decfe41f274be593cd47d2dcb7959059bad 100644 (file)
@@ -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;
index e452d71dc614665c28854bca698bfd5db9c46239..b0ab04cd440d90ab53f9e42c564556d614a5942c 100644 (file)
@@ -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 */
index 45f8ef21b911d5eef931d00faa14b34b8a82f454..31e5e0bf44823d2c3034b3509afcfd49ea4bd9ed 100644 (file)
@@ -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;
 }