summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY1
-rw-r--r--dvbapi.c10
-rw-r--r--dvbapi.h6
-rw-r--r--menu.c3
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;
}