]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
IPTV: trigger playlist download on 'force scan' for the auto IPTV network
authorJaroslav Kysela <perex@perex.cz>
Fri, 23 Feb 2018 18:48:04 +0000 (19:48 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 23 Feb 2018 18:48:04 +0000 (19:48 +0100)
src/api/api_mpegts.c
src/input/mpegts.h
src/input/mpegts/iptv/iptv.c
src/input/mpegts/mpegts_network.c

index 848f9ff98b55e4498b818577835c91d5f90f22db..3e0b28567c818e39847a609bb8eb7d6208dc7a98 100644 (file)
@@ -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;
index d2fa41431f70a8ea6e338eebfbfb9fbfbb8b7d87..99e6b547e6945b8514ed53f38ba39dc3a5a6b2e5 100644 (file)
@@ -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
index a740fe0f26664af5618475af4da64e239c2cc3de..a076c9e0dfcd4b7d5892872cb6e28eaf94a524d7 100644 (file)
@@ -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;
index fbc50714a8668d1e762ade32a6e75754d4d33a90..791c45a1fe5c15b8c122e65148f9100eaad03f0d 100644 (file)
@@ -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 )
 {