Added cMtdHandler::StopDecrypting()

This commit is contained in:
Klaus Schmidinger 2020-06-16 14:33:32 +02:00
parent 67ea2163f4
commit ba9ccc12a5
5 changed files with 20 additions and 6 deletions

View File

@ -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

View File

@ -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).

8
ci.c
View File

@ -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);
}
}

12
mtd.c
View File

@ -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
mtd.h
View File

@ -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);