From 5d666161d63749de8570d80195348e9a8236f41d Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 8 Mar 2002 15:19:49 +0100 Subject: [PATCH] Fixed reacting on changes in CICAM settings (needed to restart VDR before) --- HISTORY | 1 + dvbapi.c | 10 ++++++---- dvbapi.h | 6 +++--- menu.c | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/HISTORY b/HISTORY index 42e3ffd9..d275c8d2 100644 --- a/HISTORY +++ b/HISTORY @@ -1073,3 +1073,4 @@ Video Disk Recorder Revision History Bernd Schweikert). - Fixed avoiding the primary DVB interface in case Setup.PrimaryLimit is 0. - Fixed handling CICAM settings if the first one of a DVB card was FTA. +- Fixed reacting on changes in CICAM settings (needed to restart VDR before). diff --git a/dvbapi.c b/dvbapi.c index 16e8ab8a..2f934e3a 100644 --- a/dvbapi.c +++ b/dvbapi.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.156 2002/03/08 15:06:37 kls Exp $ + * $Id: dvbapi.c 1.157 2002/03/08 15:14:04 kls Exp $ */ #include "dvbapi.h" @@ -1690,7 +1690,6 @@ cDvbApi::cDvbApi(int n) ca = -1; priority = DEFAULTPRIORITY; cardIndex = n; - SetCaCaps(); // Devices that are only present on DVB-C or DVB-S cards: @@ -1851,8 +1850,10 @@ cDvbApi *cDvbApi::GetDvbApi(int Ca, int Priority) void cDvbApi::SetCaCaps(void) { - for (int i = 0; i < MAXCACAPS; i++) - caCaps[i] = Setup.CaCaps[CardIndex()][i]; + for (int d = 0; d < NumDvbApis; d++) { + for (int i = 0; i < MAXCACAPS; i++) + dvbApi[d]->caCaps[i] = Setup.CaCaps[dvbApi[d]->CardIndex()][i]; + } } int cDvbApi::ProvidesCa(int Ca) @@ -1907,6 +1908,7 @@ bool cDvbApi::Init(void) isyslog(LOG_INFO, "found %d video device%s", NumDvbApis, NumDvbApis > 1 ? "s" : ""); else esyslog(LOG_ERR, "ERROR: no video device found, giving up!"); + SetCaCaps(); return NumDvbApis > 0; } diff --git a/dvbapi.h b/dvbapi.h index 396b5c21..9e0bc58f 100644 --- a/dvbapi.h +++ b/dvbapi.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.h 1.64 2002/03/03 14:51:20 kls Exp $ + * $Id: dvbapi.h 1.65 2002/03/08 15:11:50 kls Exp $ */ #ifndef __DVBAPI_H @@ -125,8 +125,8 @@ public: // recording and stop recording if necessary. int CardIndex(void) { return cardIndex; } // Returns the card index of this DvbApi (0 ... MAXDVBAPI - 1). - void SetCaCaps(void); - // Sets the CaCaps of this DVB device according to the Setup data. + static void SetCaCaps(void); + // Sets the CaCaps of all DVB devices according to the Setup data. int ProvidesCa(int Ca); // Checks whether this DVB device provides the given value in its // caCaps. Returns 0 if the value is not provided, 1 if only this diff --git a/menu.c b/menu.c index b1e7e49e..39b3a4d1 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.160 2002/03/03 16:12:29 kls Exp $ + * $Id: menu.c 1.161 2002/03/08 15:18:20 kls Exp $ */ #include "menu.h" @@ -1954,6 +1954,7 @@ eOSState cMenuSetup::ProcessKey(eKeys Key) cDvbApi::PrimaryDvbApi->SetVideoFormat(data.VideoFormat ? VIDEO_FORMAT_16_9 : VIDEO_FORMAT_4_3); Setup = data; Setup.Save(); + cDvbApi::SetCaCaps(); break; default: break; }