const char *
channel_get_icon ( channel_t *ch )
{
- static __thread char buf[512], buf2[512];
+ static char buf[512], buf2[512];
channel_service_mapping_t *csm;
const char *picon = config_get_picon_path(),
*icon = ch->ch_icon;
/* Lookup imagecache ID */
if ((id = imagecache_get_id(icon))) {
snprintf(buf, sizeof(buf), "imagecache/%d", id);
-
} else {
strncpy(buf, icon, sizeof(buf));
buf[sizeof(buf)-1] = '\0';
}
+/**
+ *
+ */
+const char *
+channel_tag_get_icon(channel_tag_t *ct)
+{
+ static char buf[64];
+ const char *icon = ct->ct_icon;
+ uint32_t id;
+
+ /* Lookup imagecache ID */
+ if ((id = imagecache_get_id(icon))) {
+ snprintf(buf, sizeof(buf), "imagecache/%d", id);
+ return buf;
+ }
+ return icon;
+}
+
/* **************************************************************************
* Channel Tag Class definition
* **************************************************************************/
return ct->ct_name ?: "";
}
+static void
+channel_tag_class_icon_notify ( void *obj )
+{
+ (void)channel_tag_get_icon(obj);
+}
+
+static const void *
+channel_tag_class_get_icon ( void *obj )
+{
+ static const char *s;
+ s = channel_tag_get_icon(obj);
+ return &s;
+}
+
/* exported for others */
htsmsg_t *
channel_tag_class_get_list(void *o)
.id = "icon",
.name = "Icon (full URL)",
.off = offsetof(channel_tag_t, ct_icon),
+ .notify = channel_tag_class_icon_notify,
+ },
+ {
+ .type = PT_STR,
+ .id = "icon_public_url",
+ .name = "Icon URL",
+ .get = channel_tag_class_get_icon,
+ .opts = PO_RDONLY | PO_NOSAVE | PO_HIDDEN,
},
{
.type = PT_BOOL,
htsmsg_add_u32(out, "tagId", htsp_channel_tag_get_identifier(ct));
htsmsg_add_str(out, "tagName", ct->ct_name);
- htsmsg_add_str(out, "tagIcon", ct->ct_icon);
+ htsmsg_add_str(out, "tagIcon", channel_tag_get_icon(ct));
htsmsg_add_u32(out, "tagTitledIcon", ct->ct_titled_icon);
if(members != NULL) {
if (!i) {
i = imagecache_skel;
i->url = strdup(url);
- i->id = ++imagecache_id;
- j = RB_INSERT_SORTED(&imagecache_by_id, i, id_link, id_cmp);
- assert(!j);
+ do {
+ i->id = ++imagecache_id % INT_MAX;
+ if (!i->id) i->id = ++imagecache_id % INT_MAX;
+ j = RB_INSERT_SORTED(&imagecache_by_id, i, id_link, id_cmp);
+ } while (j);
SKEL_USED(imagecache_skel);
#if ENABLE_IMAGECACHE
imagecache_image_add(i);