diff options
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | ci.c | 8 | ||||
-rw-r--r-- | mtd.c | 12 | ||||
-rw-r--r-- | mtd.h | 4 |
5 files changed, 20 insertions, 6 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 61999e43..59b1884d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3598,6 +3598,7 @@ Helmut Binder <cco@aon.at> override character table for adding codes for more languages and special audio tracks for adding cMtdCamSlot::TsPostProcess() + for adding cMtdHandler::StopDecrypting() Ulrich Eckhardt <uli@uli-eckhardt.de> for reporting a problem with shutdown after user inactivity in case a plugin is @@ -9470,3 +9470,4 @@ Video Disk Recorder Revision History Herdler). - Added codes for more languages and special audio tracks (thanks to Helmut Binder). - Added cMtdCamSlot::TsPostProcess() (thanks to Helmut Binder). +- Added cMtdHandler::StopDecrypting() (thanks to Helmut Binder). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.c 4.27 2020/06/16 14:25:43 kls Exp $ + * $Id: ci.c 4.28 2020/06/16 14:33:32 kls Exp $ */ #include "ci.h" @@ -2757,9 +2757,13 @@ void cCamSlot::StartDecrypting(void) void cCamSlot::StopDecrypting(void) { cMutexLock MutexLock(&mutex); + if (mtdHandler) { + mtdHandler->StopDecrypting(); + return; + } if (caProgramList.Count()) { caProgramList.Clear(); - if (!dynamic_cast<cMtdCamSlot *>(this)) + if (!dynamic_cast<cMtdCamSlot *>(this) || !MasterSlot()->IsDecrypting()) SendCaPmt(CPCI_NOT_SELECTED); } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: mtd.c 1.15 2020/06/16 14:25:43 kls Exp $ + * $Id: mtd.c 1.16 2020/06/16 14:33:32 kls Exp $ */ #include "mtd.h" @@ -112,6 +112,14 @@ void cMtdHandler::StartDecrypting(void) } } +void cMtdHandler::StopDecrypting(void) +{ + for (int i = 0; i < camSlots.Size(); i++) { + if (camSlots[i]->Device()) + camSlots[i]->StopDecrypting(); + } +} + void cMtdHandler::CancelActivation(void) { for (int i = 0; i < camSlots.Size(); i++) @@ -292,8 +300,6 @@ void cMtdCamSlot::StartDecrypting(void) void cMtdCamSlot::StopDecrypting(void) { cCamSlot::StopDecrypting(); - if (!MasterSlot()->IsDecrypting()) - MasterSlot()->StopDecrypting(); cMutexLock MutexLock(&clearMutex); mtdMapper->Clear(); mtdBuffer->Clear(); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: mtd.h 1.10 2020/06/16 14:25:43 kls Exp $ + * $Id: mtd.h 1.11 2020/06/16 14:33:32 kls Exp $ */ #ifndef __MTD_H @@ -132,6 +132,8 @@ public: ///< Returns true if any of the active MTD CAM slots is currently decrypting. void StartDecrypting(void); ///< Tells all active MTD CAM slots to start decrypting. + void StopDecrypting(void); + ///< Tells all active MTD CAM slots to stop decrypting. void CancelActivation(void); ///< Tells all active MTD CAM slots to cancel activation. bool IsActivating(void); |