From c1166d75c852fc8eb6feb2d4950ba1c8a6aa4104 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 8 Aug 2014 18:55:23 +0200 Subject: [PATCH] cwc: Fix the emm tables shutdown sequence --- src/descrambler/cwc.c | 6 +++--- src/descrambler/descrambler.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 356a7d69..636fe9e2 100755 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -2146,11 +2146,11 @@ cwc_caid_update(mpegts_mux_t *mux, uint16_t caid, uint16_t pid, int valid) mux, caid, caid, pid, pid, valid); pthread_mutex_lock(&cwc_mutex); TAILQ_FOREACH(cwc, &cwcs, cwc_link) { - if (cwc->cwc_running) { + if (valid < 0 || cwc->cwc_running) { LIST_FOREACH(pcard, &cwc->cwc_cards, cs_card) { - if (pcard->cwc_caid == caid) { + if (valid < 0 || pcard->cwc_caid == caid) { if (pcard->cwc_mux && pcard->cwc_mux != mux) continue; - if (valid) { + if (valid > 0) { pcard->cwc = cwc; pcard->cwc_mux = mux; descrambler_open_emm(mux, pcard, caid, cwc_emm); diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 12cd0092..b8839303 100755 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -573,6 +573,9 @@ descrambler_flush_tables( mpegts_mux_t *mux ) if (mux == NULL) return; tvhtrace("descrambler", "mux %p - flush tables", mux); +#if ENABLE_CWC + cwc_caid_update(mux, 0, 0, -1); +#endif pthread_mutex_lock(&mux->mm_descrambler_lock); while ((dt = TAILQ_FIRST(&mux->mm_descrambler_tables)) != NULL) { while ((ds = TAILQ_FIRST(&dt->sections)) != NULL) {