service_class_channel_set
( void *obj, const void *p )
{
- int save = 0;
service_t *svc = obj;
htsmsg_t *chns = (htsmsg_t*)p;
const char *str;
HTSMSG_FOREACH(f, chns) {
if ((str = htsmsg_field_get_str(f)))
if ((ch = channel_find(str)))
- save |= service_mapper_link(svc, ch, 1);
+ service_mapper_link(svc, ch, 1);
}
/* Delete unlinked */
service_mapper_clean(svc, NULL, 1);
-
- return save;
+
+ /* no save - the link information is in the saved channel record */
+ return 0;
}
static htsmsg_t *
LIST_INSERT_HEAD(&s->s_channels, csm, csm_svc_link);
LIST_INSERT_HEAD(&c->ch_services, csm, csm_chn_link);
if (dosave) channel_save(c);
+ idnode_notify_simple(dosave ? &c->ch_id : &s->s_id);
return 1;
}
static void
service_mapper_unlink0 ( channel_service_mapping_t *csm, int save )
{
- if (save) channel_save(csm->csm_chn);
LIST_REMOVE(csm, csm_chn_link);
LIST_REMOVE(csm, csm_svc_link);
+ if (save) channel_save(csm->csm_chn);
free(csm);
}
if (csm->csm_mark) {
service_mapper_unlink0(csm, dosave);
save = 1;
+ idnode_notify_simple(s ? &csm->csm_chn->ch_id : &csm->csm_svc->s_id);
}
}
return save;