1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed handling inactive shared CA pids

This commit is contained in:
Klaus Schmidinger 2020-07-01 15:16:21 +02:00
parent fa5c9f764a
commit 568ca0e773
3 changed files with 4 additions and 2 deletions

View File

@ -3616,6 +3616,7 @@ Helmut Binder <cco@aon.at>
for adding CRC check of the CAT in cCaPidReceiver::Receive() for adding CRC check of the CAT in cCaPidReceiver::Receive()
for reporting that the 'else if' branch in cDevice::GetDeviceForTransponder() hasn't for reporting that the 'else if' branch in cDevice::GetDeviceForTransponder() hasn't
been active since version 1.7.29 been active since version 1.7.29
for fixing handling inactive shared CA pids
Ulrich Eckhardt <uli@uli-eckhardt.de> Ulrich Eckhardt <uli@uli-eckhardt.de>
for reporting a problem with shutdown after user inactivity in case a plugin is for reporting a problem with shutdown after user inactivity in case a plugin is

View File

@ -9507,3 +9507,4 @@ Video Disk Recorder Revision History
- Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in - Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in
~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen() ~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen()
(reported by Thomas Reufer). (reported by Thomas Reufer).
- Fixed handling inactive shared CA pids (thanks to Helmut Binder).

4
ci.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "ci.h"
@ -2557,7 +2557,7 @@ void cCamSlot::KeepSharedCaPids(int ProgramNumber, const int *CaSystemIds, int *
return; return;
int CaPids2[MAXRECEIVEPIDS + 1]; int CaPids2[MAXRECEIVEPIDS + 1];
for (cCiCaProgramData *p = caProgramList.First(); p; p = caProgramList.Next(p)) { 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) { if (GetCaPids(source, transponder, p->programNumber, CaSystemIds, MAXRECEIVEPIDS + 1, CaPids2) > 0) {
int *pCaPids2 = CaPids2; int *pCaPids2 = CaPids2;
while (*pCaPids2) { while (*pCaPids2) {