Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
bouquets: freesat/bskyb - fix the bouquet update logic (do not add du…
…plicate services)
  • Loading branch information
perexg committed Nov 8, 2014
1 parent aae5ac1 commit 213fc14
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions src/input/mpegts/dvb_psi.c
Expand Up @@ -54,6 +54,7 @@ typedef struct dvb_bat_svc {
TAILQ_ENTRY(dvb_bat_svc) link;
mpegts_service_t *svc;
dvb_freesat_svc_t *fallback;
uint32_t used:1;
} dvb_bat_svc_t;

typedef struct dvb_bat_id {
Expand Down Expand Up @@ -515,6 +516,9 @@ dvb_freesat_completed
uint16_t sid;
uint32_t total = 0, regions = 0, uregions = 0;

tvhtrace(dstr, "completed %s [%04X] bouquets '%s'",
bi->freesat ? "freesat" : "bskyb", bi->nbid, bi->name);

/* Find all "fallback" services and region specific */
TAILQ_FOREACH(bs, &bi->services, link) {
total++;
Expand All @@ -532,8 +536,10 @@ dvb_freesat_completed
break;
if (!fr)
tvhtrace(dstr, "cannot find freesat region id %u", fs->regionid);
else
else {
bs->used = 1;
TAILQ_INSERT_TAIL(&fr->services, fs, region_link);
}
}
}

Expand All @@ -544,11 +550,13 @@ dvb_freesat_completed
uregions++;
TAILQ_FOREACH(fs, &fr->services, region_link)
dvb_freesat_add_service(bi, fr, fs->svc, fs->lcn);
TAILQ_FOREACH(bs, &bi->services, link)
TAILQ_FOREACH(bs, &bi->services, link) {
if (bs->used) continue;
if ((fs = bs->fallback) != NULL)
dvb_freesat_add_service(bi, fr, bs->svc, fs->lcn);
else
dvb_freesat_add_service(bi, fr, bs->svc, 0);
}
}

tvhtrace(dstr, "completed %s [%04X] bouquets '%s' total %u regions %u (%u)",
Expand All @@ -566,8 +574,14 @@ dvb_freesat_completed
}

/* Clear all "fallback/default" services */
TAILQ_FOREACH(bs, &bi->services, link)
TAILQ_FOREACH(bs, &bi->services, link) {
bs->fallback = NULL;
bs->used = 0;
}

tvhtrace(dstr, "completed %s [%04X] bouquets '%s' update finished",
bi->freesat ? "freesat" : "bskyb", bi->nbid, bi->name);

}

/*
Expand Down Expand Up @@ -621,7 +635,7 @@ dvb_bskyb_local_channels
len -= 2;
ptr += 2;

tvhtrace(dstr, " region id %02X (%d) unknown %02X (%d)\n",
tvhtrace(dstr, " region id %02X (%d) unknown %02X (%d)",
regionid, regionid, ptr[0], ptr[0]);

while (len > 8) {
Expand All @@ -632,7 +646,7 @@ dvb_bskyb_local_channels
ptr += 9;
len -= 9;

tvhtrace(dstr, " sid %04X (%d) type %02X (%d) lcn %d unknown %04X (%d)\n",
tvhtrace(dstr, " sid %04X (%d) type %02X (%d) lcn %d unknown %04X (%d)",
sid, sid, stype, stype, lcn, unk, unk);

TAILQ_FOREACH(fs, &b->fservices, link)
Expand Down

0 comments on commit 213fc14

Please sign in to comment.