]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts network: stop all running muxes when the network was disabled by the user...
authorJaroslav Kysela <perex@perex.cz>
Tue, 15 Jan 2019 09:36:43 +0000 (10:36 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 15 Jan 2019 09:36:43 +0000 (10:36 +0100)
src/input/mpegts/mpegts_network.c

index b4e6330ebd4d1587fd9d8da59af09505f0ad2a97..ab1c4ba3bad9fd3100efcfbe2c4b5121c328bd90 100644 (file)
@@ -31,6 +31,22 @@ static bouquet_t * mpegts_network_bouquet_get (mpegts_network_t *, int);
  * Class definition
  * ***************************************************************************/
 
+static void
+mpegts_network_class_notify_enabled ( void *obj, const char *lang )
+{
+  mpegts_network_t *mn = (mpegts_network_t*)obj;
+  mpegts_mux_instance_t *mmi;
+  mpegts_mux_t *mm;
+  if (!mn->mn_enabled) {
+    LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link) {
+      mmi = mm->mm_active;
+      if (!mmi) continue;
+      assert(mm == mmi->mmi_mux);
+      mm->mm_stop(mm, 1, SM_CODE_ABORTED);
+    }
+  }
+}
+
 static htsmsg_t *
 mpegts_network_class_save
   ( idnode_t *in, char *filename, size_t fsize )
@@ -175,6 +191,7 @@ const idclass_t mpegts_network_class =
       .name     = N_("Enabled"),
       .desc     = N_("Enable/Disable network."),
       .off      = offsetof(mpegts_network_t, mn_enabled),
+      .notify   = mpegts_network_class_notify_enabled,
     },
     {
       .type     = PT_STR,