From: Jaroslav Kysela Date: Mon, 19 Feb 2018 19:02:04 +0000 (+0100) Subject: dvb: add mpegts_network_scan_mux_reactivate(), issue #4942 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cec33bc6ef841f3d0f66cbbc181691cb7b1c5132;p=thirdparty%2Ftvheadend.git dvb: add mpegts_network_scan_mux_reactivate(), issue #4942 --- diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 03303246e..64e8f60e9 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -1319,10 +1319,10 @@ mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid, int force ) return 0; if (!force && mm->mm_tsid != MPEGTS_TSID_NONE) return 0; - mm->mm_scan_state = MM_SCAN_STATE_ACTIVE; mm->mm_tsid = tsid; tvhtrace(LS_MPEGTS, "%s - set tsid %04X (%d)", mm->mm_nicename, tsid, tsid); idnode_changed(&mm->mm_id); + mpegts_network_scan_mux_reactivate(mm); return 1; } diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index 61a5519a6..3bf2c8249 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -204,6 +204,20 @@ mpegts_network_scan_mux_active ( mpegts_mux_t *mm ) TAILQ_INSERT_TAIL(&mn->mn_scan_active, mm, mm_scan_link); } +/* Mux has been reactivated */ +void +mpegts_network_scan_mux_reactivate ( mpegts_mux_t *mm ) +{ + mpegts_network_t *mn = mm->mm_network; + if (mm->mm_scan_state == MM_SCAN_STATE_ACTIVE) + return; + if (mm->mm_scan_state == MM_SCAN_STATE_PEND) + TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link); + mm->mm_scan_init = 0; + mm->mm_scan_state = MM_SCAN_STATE_ACTIVE; + TAILQ_INSERT_TAIL(&mn->mn_scan_active, mm, mm_scan_link); +} + /****************************************************************************** * Mux queue handling *****************************************************************************/ diff --git a/src/input/mpegts/mpegts_network_scan.h b/src/input/mpegts/mpegts_network_scan.h index 748eee03b..5a8d9d46d 100644 --- a/src/input/mpegts/mpegts_network_scan.h +++ b/src/input/mpegts/mpegts_network_scan.h @@ -45,6 +45,7 @@ void mpegts_network_scan_mux_done ( mpegts_mux_t *mm ); void mpegts_network_scan_mux_partial ( mpegts_mux_t *mm ); void mpegts_network_scan_mux_cancel ( mpegts_mux_t *mm, int reinsert ); void mpegts_network_scan_mux_active ( mpegts_mux_t *mm ); +void mpegts_network_scan_mux_reactivate ( mpegts_mux_t *mm ); /* * Init / Teardown