]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts scan: some minor corrections so stuff doesn't crash!
authorAdam Sutton <dev@adamsutton.me.uk>
Sat, 17 May 2014 09:11:36 +0000 (10:11 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Mon, 9 Jun 2014 21:08:40 +0000 (22:08 +0100)
src/input/mpegts.c
src/input/mpegts/mpegts_mux.c
src/input/mpegts/mpegts_network_scan.c

index 87d341a4d8e81da9dabe3e6445fc5a4cca90a536..b5c2de62fd604b7b9e55491ad475d5237f27e842 100644 (file)
@@ -27,6 +27,11 @@ mpegts_init ( int linuxdvb_mask, str_list_t *satip_client,
   idclass_register(&mpegts_mux_class);
   idclass_register(&mpegts_service_class);
 
+  /* Network scanner */
+#if ENABLE_MPEGTS
+  mpegts_network_scan_init();
+#endif
+
   /* Setup DVB networks */
 #if ENABLE_MPEGTS_DVB
   dvb_network_init();
@@ -67,6 +72,7 @@ mpegts_init ( int linuxdvb_mask, str_list_t *satip_client,
 void
 mpegts_done ( void )
 {
+  tvhftrace("main", mpegts_network_scan_done);
   tvhftrace("main", mpegts_mux_sched_done);
 #if ENABLE_MPEGTS_DVB
   tvhftrace("main", dvb_network_done);
index cf69ac5517fbe9200a0fa2375f16497f720d7714..0856d90ace8debbea4bed463a1739151d24b3eb6 100644 (file)
@@ -337,6 +337,9 @@ mpegts_mux_delete ( mpegts_mux_t *mm, int delconf )
   /* Stop */
   mm->mm_stop(mm, 1);
 
+  /* Remove from network */
+  LIST_REMOVE(mm, mm_network_link);
+
   /* Cancel scan */
   mpegts_network_scan_mux_cancel(mm, 0);
 
index 00d89b2477f45e9827c32eae80fa575d87b8b443..ee20b8b66630a46b93acce65e755c3b8fd4ec130 100644 (file)
@@ -107,6 +107,7 @@ void
 mpegts_network_scan_mux_fail    ( mpegts_mux_t *mm )
 {
   mm->mm_scan_ok = 0;
+  mpegts_mux_unsubscribe_by_name(mm, "scan");
   mpegts_network_scan_queue_del(mm);
 }
 
@@ -115,6 +116,7 @@ void
 mpegts_network_scan_mux_done    ( mpegts_mux_t *mm )
 {
   mm->mm_scan_ok    = 1;
+  mpegts_mux_unsubscribe_by_name(mm, "scan");
   mpegts_network_scan_queue_del(mm);
 }
 
@@ -129,9 +131,8 @@ mpegts_network_scan_mux_timeout ( mpegts_mux_t *mm )
 void
 mpegts_network_scan_mux_cancel  ( mpegts_mux_t *mm, int reinsert )
 {
-  assert(mm->mm_scan_state == MM_SCAN_STATE_ACTIVE);
-
   /* Remove */
+  mpegts_mux_unsubscribe_by_name(mm, "scan");
   mpegts_network_scan_queue_del(mm);
 
   /* Re-insert */
@@ -162,6 +163,7 @@ mpegts_network_scan_queue_del ( mpegts_mux_t *mm )
     TAILQ_REMOVE(&mpegts_network_scan_active, mm, mm_scan_link);
   mm->mm_scan_state = MM_SCAN_STATE_IDLE;
   gtimer_disarm(&mm->mm_scan_timeout);
+  mpegts_network_scan_timer_arm(0);
 }
 
 void