From: Jaroslav Kysela Date: Fri, 23 Feb 2018 18:48:04 +0000 (+0100) Subject: IPTV: trigger playlist download on 'force scan' for the auto IPTV network X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=27d129cae2acc479be15c0b55c011e0b65693fdb;p=thirdparty%2Ftvheadend.git IPTV: trigger playlist download on 'force scan' for the auto IPTV network --- diff --git a/src/api/api_mpegts.c b/src/api/api_mpegts.c index 848f9ff98..3e0b28567 100644 --- a/src/api/api_mpegts.c +++ b/src/api/api_mpegts.c @@ -147,15 +147,15 @@ api_mpegts_network_scan if (!(uuid = htsmsg_field_get_str(f))) continue; pthread_mutex_lock(&global_lock); mn = mpegts_network_find(uuid); - if (mn) - mpegts_network_scan(mn); + if (mn && mn->mn_scan) + mn->mn_scan(mn); pthread_mutex_unlock(&global_lock); } } else if ((uuid = htsmsg_field_get_str(f))) { pthread_mutex_lock(&global_lock); mn = mpegts_network_find(uuid); - if (mn) - mpegts_network_scan(mn); + if (mn && mn->mn_scan) + mn->mn_scan(mn); pthread_mutex_unlock(&global_lock); if (!mn) return -ENOENT; diff --git a/src/input/mpegts.h b/src/input/mpegts.h index d2fa41431..99e6b547e 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -350,6 +350,7 @@ struct mpegts_network (mpegts_mux_t*, uint16_t sid, uint16_t pmt_pid); const idclass_t* (*mn_mux_class) (mpegts_network_t*); mpegts_mux_t * (*mn_mux_create2) (mpegts_network_t *mn, htsmsg_t *conf); + void (*mn_scan) (mpegts_network_t*); /* * Configuration diff --git a/src/input/mpegts/iptv/iptv.c b/src/input/mpegts/iptv/iptv.c index a740fe0f2..a076c9e0d 100644 --- a/src/input/mpegts/iptv/iptv.c +++ b/src/input/mpegts/iptv/iptv.c @@ -1016,6 +1016,13 @@ iptv_network_create_mux2 return (mpegts_mux_t*)iptv_mux_create0((iptv_network_t*)mn, NULL, conf); } +static void +iptv_network_auto_scan ( mpegts_network_t *mn ) +{ + iptv_auto_network_trigger((iptv_network_t *)mn); + mpegts_network_scan(mn); +} + static mpegts_service_t * iptv_network_create_service ( mpegts_mux_t *mm, uint16_t sid, uint16_t pmt_pid ) @@ -1069,6 +1076,8 @@ iptv_network_create0 in->mn_mux_class = iptv_network_mux_class; in->mn_mux_create2 = iptv_network_create_mux2; in->mn_config_save = iptv_network_config_save; + if (idc == &iptv_auto_network_class) + in->mn_scan = iptv_network_auto_scan; /* Defaults */ in->mn_autodiscovery = 0; diff --git a/src/input/mpegts/mpegts_network.c b/src/input/mpegts/mpegts_network.c index fbc50714a..791c45a1f 100644 --- a/src/input/mpegts/mpegts_network.c +++ b/src/input/mpegts/mpegts_network.c @@ -442,6 +442,14 @@ mpegts_network_mux_create2 return NULL; } +void +mpegts_network_scan ( mpegts_network_t *mn ) +{ + mpegts_mux_t *mm; + LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) + mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND); +} + static void mpegts_network_link_delete ( mpegts_network_link_t *mnl ) { @@ -518,6 +526,7 @@ mpegts_network_create0 mn->mn_create_service = mpegts_network_create_service; mn->mn_mux_class = mpegts_network_mux_class; mn->mn_mux_create2 = mpegts_network_mux_create2; + mn->mn_scan = mpegts_network_scan; mn->mn_delete = mpegts_network_delete; /* Add to global list */ @@ -591,14 +600,6 @@ mpegts_network_set_network_name return save; } -void -mpegts_network_scan ( mpegts_network_t *mn ) -{ - mpegts_mux_t *mm; - LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) - mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND); -} - void mpegts_network_get_type_str( mpegts_network_t *mn, char *buf, size_t buflen ) {