From: Adam Sutton Date: Thu, 31 Jan 2013 10:27:40 +0000 (+0000) Subject: dvb: allow off-air services to be inserted into the service list X-Git-Tag: v3.5~51 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e00ba4c85f9d177c152568969e5e07d5e84e21a5;p=thirdparty%2Ftvheadend.git dvb: allow off-air services to be inserted into the service list --- diff --git a/src/dvb/dvb_service.c b/src/dvb/dvb_service.c index a91e92d50..61242beff 100644 --- a/src/dvb/dvb_service.c +++ b/src/dvb/dvb_service.c @@ -143,7 +143,7 @@ dvb_service_is_enabled(service_t *t) { th_dvb_mux_instance_t *tdmi = t->s_dvb_mux_instance; th_dvb_adapter_t *tda = tdmi->tdmi_adapter; - return tda->tda_enabled && tdmi->tdmi_enabled && t->s_enabled; + return tda->tda_enabled && tdmi->tdmi_enabled && t->s_enabled && t->s_pmt_pid; } @@ -416,12 +416,18 @@ dvb_service_find2(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid, LIST_FOREACH(t, &tdmi->tdmi_transports, s_group_link) { if(t->s_dvb_service_id == sid) - return t; + break; } - - if(pmt_pid == 0) - return NULL; + /* Existing - updated PMT_PID if required */ + if (t) { + if (pmt_pid && pmt_pid != t->s_pmt_pid) { + t->s_pmt_pid = pmt_pid; + *save = 1; + } + return t; + } + if(identifier == NULL) { snprintf(tmp, sizeof(tmp), "%s_%04x", tdmi->tdmi_identifier, sid); identifier = tmp;