diff --git a/CONTRIBUTORS b/CONTRIBUTORS index a054e912..7d5ff6b7 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3289,3 +3289,7 @@ Tony Houghton Christian Winkler for reporting a problem with transfer mode on full featured DVB cards for encrypted channels that have no audio pid + +Dietmar Spingler + for reporting a problem that led to a fix in detaching receivers from devices in case + a CAM needs to receive the TS diff --git a/HISTORY b/HISTORY index 081b1fd8..d99a8857 100644 --- a/HISTORY +++ b/HISTORY @@ -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). diff --git a/device.c b/device.c index 43bc0e08..869c34a3 100644 --- a/device.c +++ b/device.c @@ -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);