]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
bouquet: BSkyB / Freesat: another fix for duplicated / missing services
authorJaroslav Kysela <perex@perex.cz>
Fri, 7 Nov 2014 19:56:10 +0000 (20:56 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sat, 8 Nov 2014 20:05:39 +0000 (21:05 +0100)
src/input/mpegts/dvb_psi.c

index 6a044f3234532be704a51eb9bcc4564e1df4f95e..09c7c64b7700e447c97e33d9f5a90d58abd4092e 100644 (file)
@@ -55,6 +55,7 @@ typedef struct dvb_bat_svc {
   mpegts_service_t *svc;
   uint32_t lcn;
   dvb_freesat_svc_t *fallback;
+  int used;
 } dvb_bat_svc_t;
 
 typedef struct dvb_bat_id {
@@ -594,12 +595,14 @@ dvb_freesat_completed
     TAILQ_FOREACH(fs, &fr->services, region_link) {
       dvb_freesat_add_service(bi, fr, fs->svc, fs->lcn);
       TAILQ_FOREACH(bs, &bi->services, link)
-        if (bs->fallback && fs->lcn == bs->fallback->lcn) {
-          bs->fallback = NULL;
-          break;
-        }
+        if (bs->fallback && fs->lcn == bs->fallback->lcn)
+          bs->used = 1;
     }
     TAILQ_FOREACH(bs, &bi->services, link) {
+      if (bs->used) {
+        bs->used = 0;
+        continue;
+      }
       TAILQ_FOREACH(fs, &fr->services, region_link)
         if (fs->svc == bs->svc)
           break;