]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
bouquet: notify channels on lcn offset change
authorJaroslav Kysela <perex@perex.cz>
Sun, 2 Nov 2014 15:28:49 +0000 (16:28 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sat, 8 Nov 2014 20:05:38 +0000 (21:05 +0100)
src/bouquet.c
src/bouquet.h

index d3fd56fdcc95f2a60e71daa3fbf3b8cb650549b2..202b7c578c22e50c0f8e6bb8c39bf4079b9fe224 100644 (file)
@@ -286,6 +286,24 @@ bouquet_map_to_channels(bouquet_t *bq)
   }
 }
 
+/*
+ *
+ */
+void
+bouquet_notify_channels(bouquet_t *bq)
+{
+  channel_service_mapping_t *csm;
+  service_t *t;
+  size_t z;
+
+  for (z = 0; z < bq->bq_services->is_count; z++) {
+    t = (service_t *)bq->bq_services->is_array[z];
+    LIST_FOREACH(csm, &t->s_channels, csm_svc_link)
+      if (csm->csm_chn->ch_bouquet == bq)
+        idnode_notify_simple(&csm->csm_chn->ch_id);
+  }
+}
+
 /**
  *
  */
@@ -375,7 +393,7 @@ bouquet_class_mapnolcn_notify ( void *obj )
         bouquet_unmap_channel(bq, t);
     }
   } else {
-    bouquet_map_to_channels((bouquet_t *)obj);
+    bouquet_map_to_channels(bq);
   }
 }
 
@@ -393,7 +411,7 @@ bouquet_class_mapnoname_notify ( void *obj )
         bouquet_unmap_channel(bq, t);
     }
   } else {
-    bouquet_map_to_channels((bouquet_t *)obj);
+    bouquet_map_to_channels(bq);
   }
 }
 
@@ -419,10 +437,16 @@ bouquet_class_chtag_notify ( void *obj )
         channel_tag_unmap(csm->csm_chn, ct);
     }
   } else {
-    bouquet_map_to_channels((bouquet_t *)obj);
+    bouquet_map_to_channels(bq);
   }
 }
 
+static void
+bouquet_class_lcn_offset_notify ( void *obj )
+{
+  bouquet_notify_channels((bouquet_t *)obj);
+}
+
 static const void *
 bouquet_class_services_get ( void *obj )
 {
@@ -554,6 +578,7 @@ const idclass_t bouquet_class = {
       .id       = "lcn_off",
       .name     = "Channel Number Offset",
       .off      = offsetof(bouquet_t, bq_lcn_offset),
+      .notify   = bouquet_class_lcn_offset_notify,
     },
     {}
   }
index 986541652d691ed01c6ca8c40d148faf75bb1805..77a4dac892e144fe94ea470dcc1b94fbdde5cadd 100644 (file)
@@ -71,6 +71,7 @@ bouquet_find_by_uuid(const char *uuid)
 bouquet_t * bouquet_find_by_source(const char *name, const char *src, int create);
 
 void bouquet_map_to_channels(bouquet_t *bq);
+void bouquet_notify_channels(bouquet_t *bq);
 void bouquet_add_service(bouquet_t *bq, service_t *s);
 void bouquet_completed(bouquet_t *bq);