From: E.Smith <31170571+azlm8t@users.noreply.github.com> Date: Wed, 1 Nov 2017 15:43:13 +0000 (+0000) Subject: ui: Prefer to use accessor for de_image. (#4685). X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=790279d0ddbc0cf19430edd0d667d8c8aa64fb6b;p=thirdparty%2Ftvheadend.git ui: Prefer to use accessor for de_image. (#4685). This allows it to also try and get an image from the current EPG if the entry does not have an associated image. Issue: #4685 --- diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index 6120d5a15..6f674557a 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -689,6 +689,7 @@ htsmsg_t * dvr_autorec_entry_class_time_list(void *o, const char *null); htsmsg_t * dvr_autorec_entry_class_weekdays_get(uint32_t weekdays); htsmsg_t * dvr_autorec_entry_class_weekdays_list (void *o, const char *list); char * dvr_autorec_entry_class_weekdays_rend(uint32_t weekdays, const char *lang); +const char *dvr_entry_class_image_url_get(const dvr_entry_t *o); void dvr_autorec_check_event(epg_broadcast_t *e); void dvr_autorec_check_brand(epg_brand_t *b); diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index d4a3f5569..f3a4ef56d 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -3297,7 +3297,7 @@ dvr_entry_class_channel_icon_url_get(void *o) } static const void * -dvr_entry_class_image_url_get(void *o) +dvr_entry_class_image_url_get_as_property(void *o) { dvr_entry_t *de = (dvr_entry_t *)o; if (de->de_image) { @@ -3312,6 +3312,19 @@ dvr_entry_class_image_url_get(void *o) return &prop_sbuf_ptr; } +const char * +dvr_entry_class_image_url_get(const dvr_entry_t *o) +{ + const void *image = dvr_entry_class_image_url_get_as_property((void*)o); + if (!image) return NULL; + const char *image_str = *(const char**)image; + if (!image_str) return NULL; + if (!*image_str) return NULL; + return image_str; +} + + + static const void * dvr_entry_class_duplicate_get(void *o) { @@ -3491,7 +3504,7 @@ const idclass_t dvr_entry_class = { .id = "image", /* Name chosen to be compatible with api_epg */ .name = N_("Episode image"), .desc = N_("Episode image."), - .get = dvr_entry_class_image_url_get, + .get = dvr_entry_class_image_url_get_as_property, .off = offsetof(dvr_entry_t, de_image), .opts = PO_HIDDEN, }, diff --git a/src/htsp_server.c b/src/htsp_server.c index 8c9085c1e..b146b8140 100644 --- a/src/htsp_server.c +++ b/src/htsp_server.c @@ -1003,8 +1003,13 @@ htsp_build_dvrentry(htsp_connection_t *htsp, dvr_entry_t *de, const char *method htsmsg_add_str(out, "creator", de->de_creator); if(de->de_comment) htsmsg_add_str(out, "comment", de->de_comment); - if(de->de_image && *de->de_image) - htsmsg_add_str(out, "image", de->de_image); + /* We use the accessor since it will also try to get + * an image from current EPG if recording does not have + * an associated image. + */ + const char *image = dvr_entry_class_image_url_get(de); + if(image && *image) + htsmsg_add_str(out, "image", image); if (de->de_copyright_year) htsmsg_add_u32(out, "copyrightYear", de->de_copyright_year);