Fixed detaching receivers from devices in case a CAM needs to receive the TS

This commit is contained in:
Klaus Schmidinger 2015-01-07 13:00:33 +01:00
parent f3d583b124
commit 52620f147b
3 changed files with 12 additions and 5 deletions

View File

@ -3289,3 +3289,7 @@ Tony Houghton <h@realh.co.uk>
Christian Winkler <winkler_chr@yahoo.de>
for reporting a problem with transfer mode on full featured DVB cards for encrypted
channels that have no audio pid
Dietmar Spingler <d_spingler@gmx.de>
for reporting a problem that led to a fix in detaching receivers from devices in case
a CAM needs to receive the TS

View File

@ -8307,7 +8307,7 @@ Video Disk Recorder Revision History
- The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, sdt.h and
the functional modification to cFont::CreateFont().
2015-01-06: Version 2.1.7
2015-01-07: Version 2.1.7
- No longer logging an error message in DirSizeMB() if the given directory doesn't
exist. This avoids lots of log entries in case several VDRs use the same video
@ -8336,3 +8336,5 @@ Video Disk Recorder Revision History
the scaling in hardware or otherwise more efficiently (thanks to Thomas Reufer).
- Increased the PMT_SCAN_TIMEOUT to avoid timeouts when scanning PMTs (thanks to
Rolf Ahrenberg).
- Fixed detaching receivers from devices in case a CAM needs to receive the TS
(reported by Dietmar Spingler).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: device.c 3.15 2014/03/15 13:23:28 kls Exp $
* $Id: device.c 3.16 2015/01/07 12:53:55 kls Exp $
*/
#include "device.h"
@ -1699,10 +1699,11 @@ void cDevice::Detach(cReceiver *Receiver)
receiversLeft = true;
}
if (camSlot) {
if (Receiver->priority > MINPRIORITY) // priority check to avoid an infinite loop with the CAM slot's caPidReceiver
if (Receiver->priority > MINPRIORITY) { // priority check to avoid an infinite loop with the CAM slot's caPidReceiver
camSlot->StartDecrypting();
if (!camSlot->IsDecrypting())
camSlot->Assign(NULL);
if (!camSlot->IsDecrypting())
camSlot->Assign(NULL);
}
}
if (!receiversLeft)
Cancel(-1);