Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[htsp] fix real time tag and channel updates
  • Loading branch information
Glenn-1990 authored and perexg committed Nov 24, 2016
1 parent 82733e8 commit b9e58b9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 12 deletions.
20 changes: 17 additions & 3 deletions src/channels.c
Expand Up @@ -77,6 +77,9 @@ channel_class_changed ( idnode_t *self )
/* 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 *
Expand Down Expand Up @@ -1255,13 +1258,17 @@ channel_tag_create(const char *uuid, htsmsg_t *conf)
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)
ct->ct_comment = strdup("");
if (ct->ct_icon == NULL)
ct->ct_icon = strdup("");

/* HTSP */
htsp_tag_add(ct);

TAILQ_INSERT_TAIL(&channel_tags, ct, ct_link);
return ct;
}
Expand All @@ -1283,8 +1290,8 @@ channel_tag_destroy(channel_tag_t *ct, int delconf)
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);
Expand Down Expand Up @@ -1351,6 +1358,13 @@ channel_tag_access(channel_tag_t *ct, access_t *a, int disabled)
* 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)
{
Expand All @@ -1359,7 +1373,6 @@ 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;
}

Expand Down Expand Up @@ -1411,6 +1424,7 @@ const idclass_t channel_tag_class = {
.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,
Expand Down
27 changes: 18 additions & 9 deletions src/htsp_server.c
Expand Up @@ -72,10 +72,12 @@ static void *htsp_server, *htsp_server_2;
#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

Expand Down Expand Up @@ -3448,7 +3450,10 @@ htsp_channel_add(channel_t *ch)
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);
}

/**
Expand All @@ -3460,7 +3465,7 @@ htsp_channel_delete(channel_t *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);
}


Expand All @@ -3481,8 +3486,12 @@ htsp_tag_add(channel_tag_t *ct)
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);
}


Expand All @@ -3495,7 +3504,7 @@ htsp_tag_delete(channel_tag_t *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);
}

/**
Expand Down

0 comments on commit b9e58b9

Please sign in to comment.