From: Jaroslav Kysela Date: Tue, 26 Jan 2016 17:17:53 +0000 (+0100) Subject: cwc: flush CWC cache on reconnect X-Git-Tag: v4.2.1~1112 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c4d4da527e2366887c113ef0a56c34e4ad8035ed;p=thirdparty%2Ftvheadend.git cwc: flush CWC cache on reconnect --- diff --git a/src/descrambler.h b/src/descrambler.h index 1886e13d0..cced7f82b 100644 --- a/src/descrambler.h +++ b/src/descrambler.h @@ -164,6 +164,7 @@ void descrambler_notify ( th_descrambler_t *t, int descrambler_descramble ( struct service *t, struct elementary_stream *st, const uint8_t *tsb, int len ); +void descrambler_flush_table_data( struct service *t ); int descrambler_open_pid ( struct mpegts_mux *mux, void *opaque, int pid, descrambler_section_callback_t callback, struct service *service ); diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 048c5de6e..8f3929efa 100644 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -247,7 +247,6 @@ typedef struct cwc { */ static void cwc_service_pid_free(cwc_service_t *ct); -static void cwc_service_destroy(th_descrambler_t *td); /** @@ -1026,6 +1025,18 @@ cwc_free_cards(cwc_t *cwc) } } +/** + * + */ +static void +cwc_flush_services(cwc_t *cwc) +{ + cwc_service_t *ct; + + LIST_FOREACH(ct, &cwc->cwc_services, cs_link) + descrambler_flush_table_data(ct->td_service); +} + /** * */ @@ -1128,6 +1139,8 @@ cwc_session(cwc_t *cwc) */ cwc->cwc_retry_delay = 0; + cwc_flush_services(cwc); + /** * We do all requests from now on in a separate thread */ diff --git a/src/descrambler/descrambler.c b/src/descrambler/descrambler.c index 73cec57fe..cc9d0a9bd 100644 --- a/src/descrambler/descrambler.c +++ b/src/descrambler/descrambler.c @@ -542,7 +542,7 @@ fin: #endif } -static void +void descrambler_flush_table_data( service_t *t ) { mpegts_service_t *ms = (mpegts_service_t *)t;