/* update the EPG channel <-> channel mapping here */
if (ch->ch_enabled && ch->ch_epgauto)
epggrab_channel_add(ch);
+
+ /* HTSP */
+ htsp_channel_update(ch);
}
static htsmsg_t *
if (conf)
idnode_load(&ct->ct_id, conf);
+ /* Defaults */
if (ct->ct_name == NULL)
ct->ct_name = strdup("New tag");
if (ct->ct_comment == NULL)
if (ct->ct_icon == NULL)
ct->ct_icon = strdup("");
+ /* HTSP */
+ htsp_tag_add(ct);
+
TAILQ_INSERT_TAIL(&channel_tags, ct, ct_link);
return ct;
}
if (delconf)
hts_settings_remove("channel/tag/%s", idnode_uuid_as_str(&ct->ct_id, ubuf));
- if(ct->ct_enabled && !ct->ct_internal)
- htsp_tag_delete(ct);
+ /* HTSP */
+ htsp_tag_delete(ct);
TAILQ_REMOVE(&channel_tags, ct, ct_link);
idnode_unlink(&ct->ct_id);
* Channel Tag Class definition
* **************************************************************************/
+static void
+channel_tag_class_changed(idnode_t *self)
+{
+ /* HTSP */
+ htsp_tag_update((channel_tag_t *)self);
+}
+
static htsmsg_t *
channel_tag_class_save(idnode_t *self, char *filename, size_t fsize)
{
char ubuf[UUID_HEX_SIZE];
idnode_save(&ct->ct_id, c);
snprintf(filename, fsize, "channel/tag/%s", idnode_uuid_as_str(&ct->ct_id, ubuf));
- htsp_tag_update(ct);
return c;
}
.ic_caption = N_("Channel Tags"),
.ic_doc = tvh_doc_channeltag_class,
.ic_event = "channeltag",
+ .ic_changed = channel_tag_class_changed,
.ic_save = channel_tag_class_save,
.ic_get_title = channel_tag_class_get_title,
.ic_delete = channel_tag_class_delete,
#define HTSP_ASYNC_ON 0x01
#define HTSP_ASYNC_EPG 0x02
-#define HTSP_ASYNC_AUX_CHTAG 0x01
-#define HTSP_ASYNC_AUX_DVR 0x02
-#define HTSP_ASYNC_AUX_AUTOREC 0x03
-#define HTSP_ASYNC_AUX_TIMEREC 0x04
+#define HTSP_ASYNC_AUX_CH 0x01
+#define HTSP_ASYNC_AUX_CHTAG 0x02
+#define HTSP_ASYNC_AUX_CHTAG_DEL 0x03
+#define HTSP_ASYNC_AUX_DVR 0x04
+#define HTSP_ASYNC_AUX_AUTOREC 0x05
+#define HTSP_ASYNC_AUX_TIMEREC 0x06
#define HTSP_ASYNC_EPG_INTERVAL 30
void
htsp_channel_update(channel_t *ch)
{
- _htsp_channel_update(ch, "channelUpdate", NULL);
+ if (ch->ch_enabled)
+ _htsp_channel_update(ch, "channelUpdate", NULL);
+ else // in case the channel was ever sent to the client
+ htsp_channel_delete(ch);
}
/**
htsmsg_t *m = htsmsg_create_map();
htsmsg_add_u32(m, "channelId", channel_get_id(ch));
htsmsg_add_str(m, "method", "channelDelete");
- _htsp_channel_update(ch, NULL, m);
+ htsp_async_send(m, HTSP_ASYNC_ON, HTSP_ASYNC_AUX_CH, ch);
}
void
htsp_tag_update(channel_tag_t *ct)
{
- htsp_async_send(htsp_build_tag(ct, "tagUpdate", 1), HTSP_ASYNC_ON,
- HTSP_ASYNC_AUX_CHTAG, ct);
+ if (ct->ct_enabled && !ct->ct_internal) {
+ htsp_async_send(htsp_build_tag(ct, "tagUpdate", 1), HTSP_ASYNC_ON,
+ HTSP_ASYNC_AUX_CHTAG, ct);
+ }
+ else // in case the tag was ever sent to the client
+ htsp_tag_delete(ct);
}
htsmsg_t *m = htsmsg_create_map();
htsmsg_add_u32(m, "tagId", htsp_channel_tag_get_identifier(ct));
htsmsg_add_str(m, "method", "tagDelete");
- htsp_async_send(m, HTSP_ASYNC_ON, HTSP_ASYNC_AUX_CHTAG, ct);
+ htsp_async_send(m, HTSP_ASYNC_ON, HTSP_ASYNC_AUX_CHTAG_DEL, ct);
}
/**