From 91fdd8914fa8da7245692b350c9d9c9ef1312413 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Sat, 17 May 2014 10:11:36 +0100 Subject: [PATCH] mpegts scan: some minor corrections so stuff doesn't crash! --- src/input/mpegts.c | 6 ++++++ src/input/mpegts/mpegts_mux.c | 3 +++ src/input/mpegts/mpegts_network_scan.c | 6 ++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/input/mpegts.c b/src/input/mpegts.c index 87d341a4..b5c2de62 100644 --- a/src/input/mpegts.c +++ b/src/input/mpegts.c @@ -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); diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index cf69ac55..0856d90a 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -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); diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index 00d89b24..ee20b8b6 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -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