From a7c49bd9a12bc72a73ffa4b1ef5e1115bfa46d31 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Thu, 5 Jun 2014 19:07:22 +0100 Subject: [PATCH] mpegts network_scan: fix for failed tuning --- src/input/mpegts/mpegts_network_scan.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index bbb48b54..018041b7 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -63,18 +63,18 @@ mpegts_network_scan_timer_cb ( void *p ) if (mm == mark) break; /* Attempt to tune */ - // TODO: change reason? r = mpegts_mux_subscribe(mm, "scan", mm->mm_scan_weight); - /* Stop (no free tuners) */ - if (r == SM_CODE_NO_FREE_ADAPTER) - break; - /* Started */ if (!r) { assert(mm->mm_scan_state == MM_SCAN_STATE_ACTIVE); continue; } + assert(mm->mm_scan_state == MM_SCAN_STATE_PEND); + + /* Stop (no free tuners) */ + if (r == SM_CODE_NO_FREE_ADAPTER) + break; /* Available tuners can't be used * Note: this is subtly different it does not imply there are no free @@ -84,12 +84,15 @@ mpegts_network_scan_timer_cb ( void *p ) */ if (r == SM_CODE_NO_VALID_ADAPTER) { if (!mark) mark = mm; + TAILQ_REMOVE(&mpegts_network_scan_pend, mm, mm_scan_link); TAILQ_INSERT_SORTED(&mpegts_network_scan_pend, mm, mm_scan_link, mm_cmp); continue; } /* Failed */ - mpegts_network_scan_mux_fail(mm); + TAILQ_REMOVE(&mpegts_network_scan_pend, mm, mm_scan_link); + mm->mm_scan_ok = 0; + mm->mm_scan_state = MM_SCAN_STATE_IDLE; } /* Re-arm (backstop, most things will auto-rearm at point of next event