From faae73248b29c68f64121780c9e221dbec261533 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 16 Jun 2014 16:08:21 +0200 Subject: [PATCH] capmt: Use only filtered components for ECM PIDs --- src/descrambler/capmt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/descrambler/capmt.c b/src/descrambler/capmt.c index 173e1675..c02f8a76 100644 --- a/src/descrambler/capmt.c +++ b/src/descrambler/capmt.c @@ -1497,7 +1497,10 @@ capmt_caid_change(th_descrambler_t *td) pthread_mutex_lock(&capmt->capmt_mutex); t = (mpegts_service_t*)td->td_service; - TAILQ_FOREACH(st, &t->s_components, es_link) { + + lock_assert(&t->s_stream_mutex); + + TAILQ_FOREACH(st, &t->s_filt_components, es_link) { LIST_FOREACH(c, &st->es_caids, link) { /* search ecmpid in list */ LIST_FOREACH(cce, &ct->ct_caid_ecm, cce_link) @@ -1767,7 +1770,8 @@ capmt_service_start(service_t *s) ct->ct_adapter = tuner; change = 0; - TAILQ_FOREACH(st, &t->s_components, es_link) { + pthread_mutex_lock(&t->s_stream_mutex); + TAILQ_FOREACH(st, &t->s_filt_components, es_link) { caid_t *c; LIST_FOREACH(c, &st->es_caids, link) { if(c == NULL) @@ -1785,6 +1789,7 @@ capmt_service_start(service_t *s) change = 1; } } + pthread_mutex_unlock(&t->s_stream_mutex); td = (th_descrambler_t *)ct; tvhcsa_init(td->td_csa = &ct->ct_csa);