channel_t *ch = NULL;
channel_service_mapping_t *csm;
+ if (!t->s_enabled)
+ return;
if (!bq->bq_mapradio && service_is_radio(t))
return;
if (!bq->bq_mapnolcn &&
}
}
+/**
+ *
+ */
+void
+bouquet_notify_service_enabled(service_t *t)
+{
+ bouquet_t *bq;
+
+ lock_assert(&global_lock);
+
+ RB_FOREACH(bq, &bouquets, bq_link)
+ if (idnode_set_exists(bq->bq_services, &t->s_id)) {
+ if (!t->s_enabled)
+ bouquet_unmap_channel(bq, t);
+ else if (bq->bq_enabled && bq->bq_maptoch)
+ bouquet_map_channel(bq, t);
+ }
+}
+
/*
*
*/
void bouquet_destroy_by_service(service_t *t);
void bouquet_destroy_by_channel_tag(channel_tag_t *ct);
+void bouquet_notify_service_enabled(service_t *t);
+
static inline bouquet_t *
bouquet_find_by_uuid(const char *uuid)
{ return (bouquet_t *)idnode_find(uuid, &bouquet_class, NULL); }
struct service_queue service_all;
+static void
+service_class_notify_enabled ( void *obj )
+{
+ bouquet_notify_service_enabled((service_t *)obj);
+}
+
static const void *
service_class_channel_get ( void *obj )
{
.id = "enabled",
.name = "Enabled",
.off = offsetof(service_t, s_enabled),
+ .notify = service_class_notify_enabled,
},
{
.type = PT_STR,