]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvb: allow off-air services to be inserted into the service list
authorAdam Sutton <dev@adamsutton.me.uk>
Thu, 31 Jan 2013 10:27:40 +0000 (10:27 +0000)
committerAdam Sutton <dev@adamsutton.me.uk>
Thu, 31 Jan 2013 10:27:51 +0000 (10:27 +0000)
src/dvb/dvb_service.c

index a91e92d5048416d8f2c4c997e97aa00b9ca997f2..61242beff06f316cc370de19035d860be09f0162 100644 (file)
@@ -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;