summaryrefslogtreecommitdiff
path: root/ci.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2015-01-09 09:46:57 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2015-01-09 09:46:57 +0100
commit7fac1d4ae2284b8789b3042dc261393589649206 (patch)
tree81b9d0e3d4f173aa3f6b84c0bad3e5e5f00da2ed /ci.c
parent52620f147b21d979780ca3e2e849caa5138fbeba (diff)
downloadvdr-7fac1d4ae2284b8789b3042dc261393589649206.tar.gz
vdr-7fac1d4ae2284b8789b3042dc261393589649206.tar.bz2
Fixed resetting the receiver for EMM pids for CAMs that need to receive the TS
Diffstat (limited to 'ci.c')
-rw-r--r--ci.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ci.c b/ci.c
index 90777651..fc50071e 100644
--- a/ci.c
+++ b/ci.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: ci.c 3.13 2014/03/26 11:51:09 kls Exp $
+ * $Id: ci.c 3.14 2015/01/09 09:41:20 kls Exp $
*/
#include "ci.h"
@@ -123,6 +123,7 @@ public:
virtual ~cCaPidReceiver() { Detach(); }
virtual void Receive(uchar *Data, int Length);
bool HasCaPids(void) { return NumPids() - emmPids.Size() - 1 > 0; }
+ void Reset(void) { DelEmmPids(); }
};
cCaPidReceiver::cCaPidReceiver(void)
@@ -1931,6 +1932,11 @@ void cCamSlot::SendCaPmt(uint8_t CmdId)
else {
cCiCaPmt CaPmt(CmdId, 0, 0, 0, NULL);
cas->SendPMT(&CaPmt);
+ if (caPidReceiver) {
+ if (cDevice *d = Device())
+ d->Detach(caPidReceiver);
+ caPidReceiver->Reset();
+ }
}
}
}