]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
cwc: flush CWC cache on reconnect
authorJaroslav Kysela <perex@perex.cz>
Tue, 26 Jan 2016 17:17:53 +0000 (18:17 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 26 Jan 2016 17:17:53 +0000 (18:17 +0100)
src/descrambler.h
src/descrambler/cwc.c
src/descrambler/descrambler.c

index 1886e13d0a91b64ad30d7ab0963f1ce8395455c9..cced7f82b2eb998260b1bfb698145b852723a908 100644 (file)
@@ -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 );
index 048c5de6ed0f12a3cd497ae97e9af089d6d5a372..8f3929efa17fd23943f329fe97d9c36d8d3dcc01 100644 (file)
@@ -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
    */
index 73cec57feac69dc0b7a474fd2a83f954dd20eca4..cc9d0a9bd36f4ec6197c7af48e3e11a033aa6134 100644 (file)
@@ -542,7 +542,7 @@ fin:
 #endif
 }
 
-static void
+void
 descrambler_flush_table_data( service_t *t )
 {
   mpegts_service_t *ms = (mpegts_service_t *)t;