diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2015-01-12 10:44:58 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2015-01-12 10:44:58 +0100 |
commit | 35f73199d4a8ecc82479ebc6a3f5ba4f9cd28f75 (patch) | |
tree | 9149e1c1ea7932b6db2f7342354d0cf7fee4b3f2 | |
parent | 34c79fdc503a2e63bc9907f68d77f2c4dd781a0c (diff) | |
download | vdr-35f73199d4a8ecc82479ebc6a3f5ba4f9cd28f75.tar.gz vdr-35f73199d4a8ecc82479ebc6a3f5ba4f9cd28f75.tar.bz2 |
Fixed resetting the receiver for EMM pids for CAMs that need to receive the TS (cont'd)
-rw-r--r-- | ci.c | 9 | ||||
-rw-r--r-- | receiver.h | 3 |
2 files changed, 9 insertions, 3 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.c 3.14 2015/01/09 09:41:20 kls Exp $ + * $Id: ci.c 3.15 2015/01/12 10:44:58 kls Exp $ */ #include "ci.h" @@ -123,7 +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(); } + void Reset(void) { DelEmmPids(); catVersion = -1; } }; cCaPidReceiver::cCaPidReceiver(void) @@ -163,6 +163,9 @@ void cCaPidReceiver::Receive(uchar *Data, int Length) if (v != catVersion) { if (Data[11] == 0 && Data[12] == 0) { // section number, last section number if (l <= TS_SIZE - 8) { + cDevice *AttachedDevice = Device(); + if (AttachedDevice) + AttachedDevice->Detach(this); DelEmmPids(); for (int i = 13; i < l + 8 - 4; i++) { // +8 = header, -4 = checksum if (Data[i] == 0x09) { @@ -179,6 +182,8 @@ void cCaPidReceiver::Receive(uchar *Data, int Length) i += Data[i + 1] - 1; // -1 to compensate for the loop increment } } + if (AttachedDevice) + AttachedDevice->AttachReceiver(this); } else dsyslog("multi packet CAT section - unhandled!"); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: receiver.h 3.1 2014/01/01 11:45:09 kls Exp $ + * $Id: receiver.h 3.2 2015/01/12 10:24:20 kls Exp $ */ #ifndef __RECEIVER_H @@ -24,6 +24,7 @@ private: int numPids; bool WantsPid(int Pid); protected: + cDevice *Device(void) { return device; } void Detach(void); virtual void Activate(bool On) {} ///< This function is called just before the cReceiver gets attached to |