summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2020-07-01 15:16:21 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2020-07-01 15:16:21 +0200
commit568ca0e773b5a04bfde9d855d1df524630c550b3 (patch)
tree06e1399fd4ea6e2abae798b602833052e3dc4d8e
parentfa5c9f764a6edbaba9543365770b14992194a5d0 (diff)
downloadvdr-568ca0e773b5a04bfde9d855d1df524630c550b3.tar.gz
vdr-568ca0e773b5a04bfde9d855d1df524630c550b3.tar.bz2
Fixed handling inactive shared CA pids
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY1
-rw-r--r--ci.c4
3 files changed, 4 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index cbac654d..a89bfd3c 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -3616,6 +3616,7 @@ Helmut Binder <cco@aon.at>
for adding CRC check of the CAT in cCaPidReceiver::Receive()
for reporting that the 'else if' branch in cDevice::GetDeviceForTransponder() hasn't
been active since version 1.7.29
+ for fixing handling inactive shared CA pids
Ulrich Eckhardt <uli@uli-eckhardt.de>
for reporting a problem with shutdown after user inactivity in case a plugin is
diff --git a/HISTORY b/HISTORY
index c478d6f5..3b3a4074 100644
--- a/HISTORY
+++ b/HISTORY
@@ -9507,3 +9507,4 @@ Video Disk Recorder Revision History
- Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in
~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen()
(reported by Thomas Reufer).
+- Fixed handling inactive shared CA pids (thanks to Helmut Binder).
diff --git a/ci.c b/ci.c
index 2951273a..db79b723 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 4.29 2020/06/27 10:05:56 kls Exp $
+ * $Id: ci.c 4.30 2020/07/01 15:16:21 kls Exp $
*/
#include "ci.h"
@@ -2557,7 +2557,7 @@ void cCamSlot::KeepSharedCaPids(int ProgramNumber, const int *CaSystemIds, int *
return;
int CaPids2[MAXRECEIVEPIDS + 1];
for (cCiCaProgramData *p = caProgramList.First(); p; p = caProgramList.Next(p)) {
- if (p->programNumber != ProgramNumber) {
+ if (p->Active()) {
if (GetCaPids(source, transponder, p->programNumber, CaSystemIds, MAXRECEIVEPIDS + 1, CaPids2) > 0) {
int *pCaPids2 = CaPids2;
while (*pCaPids2) {