]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
channel: handle better ch_enable in EPG and DVR, fixes #2668
authorJaroslav Kysela <perex@perex.cz>
Sun, 8 Feb 2015 14:17:01 +0000 (15:17 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 8 Feb 2015 14:17:50 +0000 (15:17 +0100)
src/dvr/dvr_autorec.c
src/dvr/dvr_db.c
src/epggrab/channel.c
src/service.c

index b113da21ac6b16a5b7baff4b4852f6b25d98f7df..e9fddbf1b49cbb2340d428f12e6ca7731f9067ce 100644 (file)
@@ -122,9 +122,13 @@ autorec_cmp(dvr_autorec_entry_t *dae, epg_broadcast_t *e)
   if ((cfg = dae->dae_config) == NULL)
     return 0;
   if (cfg->dvr_sl_quality_lock)
-    if(dae->dae_channel != NULL &&
-       dae->dae_channel != e->channel)
-      return 0;
+    if(dae->dae_channel != NULL) {
+      if (dae->dae_channel != e->channel &&
+          dae->dae_channel->ch_enabled)
+        return 0;
+      if (!dae->dae_channel->ch_enabled)
+        return 0;
+    }
 
   if(dae->dae_channel_tag != NULL) {
     LIST_FOREACH(ctm, &dae->dae_channel_tag->ct_ctms, ctm_tag_link)
index a5d6c6849b4d02962f67ac78e3b546b5e117b5d5..e1f5a70e443d13d8c4dd6f854f8e8507c049fb02 100644 (file)
@@ -313,7 +313,7 @@ dvr_entry_set_timer(dvr_entry_t *de)
 
     gtimer_arm_abs(&de->de_timer, dvr_timer_stop_recording, de, stop);
 
-  } else if (de->de_channel) {
+  } else if (de->de_channel && de->de_channel->ch_enabled) {
 
     de->de_sched_state = DVR_SCHEDULED;
 
@@ -1015,6 +1015,11 @@ dvr_timer_start_recording(void *aux)
 {
   dvr_entry_t *de = aux;
 
+  if (de->de_channel == NULL || !de->de_channel->ch_enabled) {
+    de->de_sched_state = DVR_NOSTATE;
+    return;
+  }
+
   de->de_sched_state = DVR_RECORDING;
   de->de_rec_state = DVR_RS_PENDING;
 
index 72739add2b6d213494fd5640b36627660bea3fdd..237967d71e70e9af441e88a67662aae64147fb62 100644 (file)
@@ -36,7 +36,7 @@ SKEL_DECLARE(epggrab_channel_skel, epggrab_channel_t);
 /* Check if channels match */
 int epggrab_channel_match ( epggrab_channel_t *ec, channel_t *ch )
 {
-  if (!ec || !ch || !ch->ch_epgauto) return 0;
+  if (!ec || !ch || !ch->ch_epgauto || !ch->ch_enabled) return 0;
   if (LIST_FIRST(&ec->channels)) return 0; // ignore already paired
 
   if (ec->name && !strcmp(ec->name, channel_get_name(ch))) return 1;
@@ -62,7 +62,7 @@ epggrab_channel_link ( epggrab_channel_t *ec, channel_t *ch )
   epggrab_channel_link_t *ecl;
 
   /* No change */
-  if (!ch) return 0;
+  if (!ch || !ch->ch_enabled) return 0;
 
   /* Already linked */
   LIST_FOREACH(ecl, &ec->channels, ecl_epg_link) {
index 0188a7a27084b78bf09aed231870b74cdce1ba11..bce2863f032e459ebc5b2fa30ad03d30e2a82efe 100644 (file)
@@ -254,6 +254,7 @@ stream_init(elementary_stream_t *st)
 {
   st->es_cc = -1;
 
+  st->es_parser_state = 0;
   st->es_startcond = 0xffffffff;
   st->es_curdts = PTS_UNSET;
   st->es_curpts = PTS_UNSET;
@@ -700,6 +701,10 @@ service_find_instance
     si->si_mark = 1;
 
   if (ch) {
+    if (!ch->ch_enabled) {
+      *error = SM_CODE_SVC_NOT_ENABLED;
+      return NULL;
+    }
     LIST_FOREACH(csm, &ch->ch_services, csm_chn_link) {
       s = csm->csm_svc;
       if (s->s_is_enabled(s, flags))