From: Adam Sutton Date: Thu, 5 Jun 2014 18:07:22 +0000 (+0100) Subject: mpegts network_scan: fix for failed tuning X-Git-Tag: v4.1~1990 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7c49bd9a12bc72a73ffa4b1ef5e1115bfa46d31;p=thirdparty%2Ftvheadend.git mpegts network_scan: fix for failed tuning --- diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index bbb48b54e..018041b75 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