Add support for shared frondends cards

Message ID L93RA3$1466700FDD663718A4C3620D532E033C@libero.it
State New
Headers

Commit Message

support\.intranet Sept. 21, 2010, 3:06 p.m. UTC
  
  

Comments

Ian Bates Sept. 22, 2010, 8:41 p.m. UTC | #1
On 21 Sep 2010, at 16:06, support.intranet wrote:

> The attached patch (for VDR 1.7.16) implements support for multituner cards where only one tuner can be active at one time, the so called shared frontend cards (notably the HVR-4000 and its derivatives).
> Currently VDR tries to open all the frontends on startup, with the result that the first frontend (usually DVB-S) works, but the second (usually DVB-T) fails with "Device or resource busy" error. The patch adds a new configuration option to setup.conf, called "OnDemand"; it defaults to 0 (exactly the current behaviour). If set to 1, tuners will be appropriately opened and closed when switching channels. I've tested it with the vnsi plugin and XBMC.
> I'd be happy if someone could review it and tell me if there is anything to correct and if it is possible to mainline it.
> Alberto
> <aod.diff>_______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Ciao Alberto,

Interesting work.  I live in the UK and have an HVR4000 for DVB-S.  Unfortunately DVB-T reception is poor where I live (hence the satellite solution - additional multilnb to point at 28.2E and 13.0E for L'Eridita) so I cannot fully test this past patching and compiling which I assume will work as you state you have tested.

Looking at the patch, there is something about inhibit epgscan.  I do not know much about vdr internals.  Would patching vdr and enabling the ondemand option stop epg from updating?  A slight negative if this is the case.


Ian.
  

Patch

diff -rupN vdr-1.7.16/config.c vdr-1.7.16-new/config.c
--- vdr-1.7.16/config.c	2010-06-06 12:06:43.000000000 +0200
+++ vdr-1.7.16-new/config.c	2010-09-19 23:38:15.569140978 +0200
@@ -399,6 +399,7 @@  cSetup::cSetup(void)
   InitialVolume = -1;
   ChannelsWrap = 0;
   EmergencyExit = 1;
+  OnDemand = 0;
 }
 
 cSetup& cSetup::operator= (const cSetup &s)
@@ -590,6 +591,7 @@  bool cSetup::Parse(const char *Name, con
   else if (!strcasecmp(Name, "InitialVolume"))       InitialVolume      = atoi(Value);
   else if (!strcasecmp(Name, "ChannelsWrap"))        ChannelsWrap       = atoi(Value);
   else if (!strcasecmp(Name, "EmergencyExit"))       EmergencyExit      = atoi(Value);
+  else if (!strcasecmp(Name, "OnDemand"))            OnDemand           = atoi(Value);
   else
      return false;
   return true;
@@ -686,6 +688,7 @@  bool cSetup::Save(void)
   Store("InitialVolume",      InitialVolume);
   Store("ChannelsWrap",       ChannelsWrap);
   Store("EmergencyExit",      EmergencyExit);
+  Store("OnDemand",           OnDemand);
 
   Sort();
 
diff -rupN vdr-1.7.16/config.h vdr-1.7.16-new/config.h
--- vdr-1.7.16/config.h	2010-09-12 13:31:21.000000000 +0200
+++ vdr-1.7.16-new/config.h	2010-09-19 23:38:15.569140978 +0200
@@ -291,6 +291,7 @@  public:
   int InitialVolume;
   int ChannelsWrap;
   int EmergencyExit;
+  int OnDemand;
   int __EndData__;
   cSetup(void);
   cSetup& operator= (const cSetup &s);
diff -rupN vdr-1.7.16/device.c vdr-1.7.16-new/device.c
--- vdr-1.7.16/device.c	2010-06-03 15:35:02.000000000 +0200
+++ vdr-1.7.16-new/device.c	2010-09-19 23:38:15.570141038 +0200
@@ -261,6 +261,7 @@  cDevice *cDevice::GetDevice(const cChann
       if (NumUsableSlots && SlotPriority[j] > MAXPRIORITY)
          continue; // there is no CAM available in this slot
       for (int i = 0; i < numDevices; i++) {
+          device[i]->Access();
           if (device[i] == AvoidDevice)
              continue; // this device shall be temporarily avoided
           if (Channel->Ca() && Channel->Ca() <= CA_DVB_MAX && Channel->Ca() != device[i]->CardIndex() + 1)
@@ -269,6 +270,9 @@  cDevice *cDevice::GetDevice(const cChann
              continue; // CAM slot can't be used with this device
           bool ndr;
           if (device[i]->ProvidesChannel(Channel, Priority, &ndr)) { // this device is basicly able to do the job
+             if (Setup.OnDemand) {
+               return device[i]; // Skip impact tests to avoid long waintings and timeouts
+             }
              if (NumUsableSlots && device[i]->CamSlot() && device[i]->CamSlot() != CamSlots.Get(j))
                 ndr = true; // using a different CAM slot requires detaching receivers
              // Put together an integer number that reflects the "impact" using
@@ -633,6 +637,13 @@  bool cDevice::MaySwitchTransponder(void)
   return !Receiving(true) && !(pidHandles[ptAudio].pid || pidHandles[ptVideo].pid || pidHandles[ptDolby].pid);
 }
 
+void cDevice::CloseAll()
+{
+  for (int i = 0; i < numDevices; i++) {
+    device[i]->Close();
+  }
+}
+
 bool cDevice::SwitchChannel(const cChannel *Channel, bool LiveView)
 {
   if (LiveView) {
@@ -698,6 +709,7 @@  eSetChannelResult cDevice::SetChannel(co
 
   eSetChannelResult Result = scrOk;
 
+  Device->Access();
   // If this DVB card can't receive this channel, let's see if we can
   // use the card that actually can receive it and transfer data from there:
 
@@ -771,6 +783,14 @@  void cDevice::ForceTransferMode(void)
      }
 }
 
+void cDevice::Access(bool ondemand)
+{
+}
+
+void cDevice::Close(void)
+{
+}
+
 bool cDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
 {
   return false;
diff -rupN vdr-1.7.16/device.h vdr-1.7.16-new/device.h
--- vdr-1.7.16/device.h	2010-04-05 11:51:29.000000000 +0200
+++ vdr-1.7.16-new/device.h	2010-09-19 23:50:40.741137254 +0200
@@ -159,6 +159,8 @@  public:
   static void Shutdown(void);
          ///< Closes down all devices.
          ///< Must be called at the end of the program.
+  virtual void CloseAll(void);
+         ///< Closes all devices in OnDemand mode (called by Access()).
 private:
   static int nextCardIndex;
   int cardIndex;
@@ -189,6 +191,10 @@  protected:
          ///< device (On = false), it should do so in this function.
          ///< A derived class must call the MakePrimaryDevice() function of its
          ///< base class.
+  virtual void Access(bool ondemand = true);
+         ///< Actually access the adapter/frontend.
+  virtual void Close(void);
+         ///< Close the adapter/frontend file descriptors.
 public:
   bool IsPrimaryDevice(void) const { return this == primaryDevice; }
   int CardIndex(void) const { return cardIndex; }
diff -rupN vdr-1.7.16/dvbdevice.c vdr-1.7.16-new/dvbdevice.c
--- vdr-1.7.16/dvbdevice.c	2010-05-01 11:47:13.000000000 +0200
+++ vdr-1.7.16-new/dvbdevice.c	2010-09-19 23:38:15.573138184 +0200
@@ -669,62 +669,10 @@  cDvbDevice::cDvbDevice(int Adapter, int 
   dvbTuner = NULL;
   frontendType = SYS_UNDEFINED;
   numProvidedSystems = 0;
-
-  // Devices that are present on all card types:
-
-  int fd_frontend = DvbOpen(DEV_DVB_FRONTEND, adapter, frontend, O_RDWR | O_NONBLOCK);
-
-  // Common Interface:
-
-  fd_ca = DvbOpen(DEV_DVB_CA, adapter, frontend, O_RDWR);
-  if (fd_ca >= 0)
-     ciAdapter = cDvbCiAdapter::CreateCiAdapter(this, fd_ca);
-
-  // The DVR device (will be opened and closed as needed):
-
-  fd_dvr = -1;
-
-  // We only check the devices that must be present - the others will be checked before accessing them://XXX
-
-  if (fd_frontend >= 0) {
-     if (ioctl(fd_frontend, FE_GET_INFO, &frontendInfo) >= 0) {
-        switch (frontendInfo.type) {
-          case FE_QPSK: frontendType = (frontendInfo.caps & FE_CAN_2G_MODULATION) ? SYS_DVBS2 : SYS_DVBS; break;
-          case FE_OFDM: frontendType = SYS_DVBT; break;
-          case FE_QAM:  frontendType = SYS_DVBC_ANNEX_AC; break;
-          case FE_ATSC: frontendType = SYS_ATSC; break;
-          default: esyslog("ERROR: unknown frontend type %d on frontend %d/%d", frontendInfo.type, adapter, frontend);
-          }
-        }
-     else
-        LOG_ERROR;
-     if (frontendType != SYS_UNDEFINED) {
-        numProvidedSystems++;
-        if (frontendType == SYS_DVBS2)
-           numProvidedSystems++;
-        char Modulations[64];
-        char *p = Modulations;
-        if (frontendInfo.caps & FE_CAN_QPSK)    { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QPSK, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_QAM_16)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_16, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_QAM_32)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_32, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_QAM_64)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_64, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_QAM_128) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_128, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_QAM_256) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_256, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_8VSB)    { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_8, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_16VSB)   { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_16, ModulationValues)); }
-        if (frontendInfo.caps & FE_CAN_TURBO_FEC){numProvidedSystems++; p += sprintf(p, ",%s", "TURBO_FEC"); }
-        if (p != Modulations)
-           p = Modulations + 1; // skips first ','
-        else
-           p = (char *)"unknown modulations";
-        isyslog("frontend %d/%d provides %s with %s (\"%s\")", adapter, frontend, DeliverySystems[frontendType], p, frontendInfo.name);
-        dvbTuner = new cDvbTuner(CardIndex() + 1, fd_frontend, adapter, frontend, frontendType);
-        }
-     }
-  else
-     esyslog("ERROR: can't open DVB device %d/%d", adapter, frontend);
-
-  StartSectionHandler();
+  openlevel = 0;
+  fd_frontend = -1;
+  fd_ca= -1;
+  Access(false); // If ondemand is disabled, access all devices on startup as usual
 }
 
 cDvbDevice::~cDvbDevice()
@@ -741,6 +689,87 @@  cString cDvbDevice::DvbName(const char *
   return cString::sprintf("%s%d/%s%d", DEV_DVB_ADAPTER, Adapter, Name, Frontend);
 }
 
+void cDvbDevice::Access(bool ondemand)
+{
+  if (ondemand == Setup.OnDemand) {
+    if (openlevel == 0) {
+      if (Setup.OnDemand) {
+        isyslog("Accessing device %d/%d", adapter, frontend);
+        CloseAll();
+      }
+      // Devices that are present on all card types:
+      fd_frontend = DvbOpen(DEV_DVB_FRONTEND, adapter, frontend, O_RDWR | O_NONBLOCK);
+      
+      // Common Interface:
+      
+      fd_ca = DvbOpen(DEV_DVB_CA, adapter, frontend, O_RDWR);
+      if (fd_ca >= 0)
+        ciAdapter = cDvbCiAdapter::CreateCiAdapter(this, fd_ca);
+      
+      // The DVR device (will be opened and closed as needed):
+        
+        fd_dvr = -1;
+        
+        // We only check the devices that must be present - the others will be checked before accessing them://XXX
+        
+        if (fd_frontend >= 0) {
+          if (ioctl(fd_frontend, FE_GET_INFO, &frontendInfo) >= 0) {
+            switch (frontendInfo.type) {
+              case FE_QPSK: frontendType = (frontendInfo.caps & FE_CAN_2G_MODULATION) ? SYS_DVBS2 : SYS_DVBS; break;
+              case FE_OFDM: frontendType = SYS_DVBT; break;
+              case FE_QAM:  frontendType = SYS_DVBC_ANNEX_AC; break;
+              case FE_ATSC: frontendType = SYS_ATSC; break;
+              default: esyslog("ERROR: unknown frontend type %d on frontend %d/%d", frontendInfo.type, adapter, frontend);
+            }
+          }
+          else
+            LOG_ERROR;
+          if (frontendType != SYS_UNDEFINED) {
+            numProvidedSystems++;
+            if (frontendType == SYS_DVBS2)
+              numProvidedSystems++;
+            char Modulations[64];
+            char *p = Modulations;
+            if (frontendInfo.caps & FE_CAN_QPSK)    { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QPSK, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_QAM_16)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_16, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_QAM_32)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_32, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_QAM_64)  { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_64, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_QAM_128) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_128, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_QAM_256) { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(QAM_256, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_8VSB)    { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_8, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_16VSB)   { numProvidedSystems++; p += sprintf(p, ",%s", MapToUserString(VSB_16, ModulationValues)); }
+            if (frontendInfo.caps & FE_CAN_TURBO_FEC){numProvidedSystems++; p += sprintf(p, ",%s", "TURBO_FEC"); }
+            if (p != Modulations)
+              p = Modulations + 1; // skips first ','
+              else
+                p = (char *)"unknown modulations";
+              isyslog("frontend %d/%d provides %s with %s (\"%s\")", adapter, frontend, DeliverySystems[frontendType], p, frontendInfo.name);
+            dvbTuner = new cDvbTuner(CardIndex() + 1, fd_frontend, adapter, frontend, frontendType);
+          }
+        }
+        else {
+          esyslog("ERROR: can't open DVB device %d/%d", adapter, frontend);
+        }
+        StartSectionHandler();
+        openlevel = 1;
+    }
+  }
+}
+
+void cDvbDevice::Close(void)
+{
+  if (Setup.OnDemand == true && openlevel == 1) {
+      isyslog("Closing device %d/%d", adapter, frontend);
+      StopSectionHandler();
+      delete dvbTuner;
+      delete ciAdapter;
+      //sleep(2);
+      close(fd_ca);
+      close(fd_frontend);
+      openlevel = 0;
+  }
+}
+
 int cDvbDevice::DvbOpen(const char *Name, int Adapter, int Frontend, int Mode, bool ReportError)
 {
   cString FileName = DvbName(Name, Adapter, Frontend);
diff -rupN vdr-1.7.16/dvbdevice.h vdr-1.7.16-new/dvbdevice.h
--- vdr-1.7.16/dvbdevice.h	2010-04-11 12:29:37.000000000 +0200
+++ vdr-1.7.16-new/dvbdevice.h	2010-09-19 23:50:46.828386774 +0200
@@ -115,13 +115,18 @@  public:
          ///< Initializes the DVB devices.
          ///< Must be called before accessing any DVB functions.
          ///< \return True if any devices are available.
+  virtual void Access(bool ondemand = true);
+         ///< Actually access the adapter/frontend.
+  virtual void Close(void);
+         ///< Close the adapter/frontend file descriptors.
 protected:
   int adapter, frontend;
 private:
   dvb_frontend_info frontendInfo;
   int numProvidedSystems;
   fe_delivery_system frontendType;
-  int fd_dvr, fd_ca;
+  int fd_dvr, fd_ca, fd_frontend;
+  int openlevel;
 public:
   cDvbDevice(int Adapter, int Frontend);
   virtual ~cDvbDevice();
diff -rupN vdr-1.7.16/menu.c vdr-1.7.16-new/menu.c
--- vdr-1.7.16/menu.c	2010-06-06 11:56:16.000000000 +0200
+++ vdr-1.7.16-new/menu.c	2010-09-19 23:38:15.577137401 +0200
@@ -3102,6 +3102,7 @@  cMenuSetupMisc::cMenuSetupMisc(void)
   Add(new cMenuEditIntItem( tr("Setup.Miscellaneous$Initial volume"),             &data.InitialVolume, -1, 255, tr("Setup.Miscellaneous$as before")));
   Add(new cMenuEditBoolItem(tr("Setup.Miscellaneous$Channels wrap"),              &data.ChannelsWrap));
   Add(new cMenuEditBoolItem(tr("Setup.Miscellaneous$Emergency exit"),             &data.EmergencyExit));
+  Add(new cMenuEditBoolItem(tr("Setup.Miscellaneous$Access cards on demand"),     &data.OnDemand));
 }
 
 // --- cMenuSetupPluginItem --------------------------------------------------
diff -rupN vdr-1.7.16/po/ar.po vdr-1.7.16-new/po/ar.po
--- vdr-1.7.16/po/ar.po	2010-09-19 14:44:29.000000000 +0200
+++ vdr-1.7.16-new/po/ar.po	2010-09-19 23:43:09.557511607 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-09-12 13:37+0200\n"
+"POT-Creation-Date: 2010-09-19 23:43+0200\n"
 "PO-Revision-Date: 2008-10-16 11:16-0400\n"
 "Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
 "Language-Team: Arabic <ar@li.org>\n"
@@ -1126,6 +1126,10 @@  msgstr "Ù?ساؚÙ?"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "خرÙ?ج طارÙ?Ø¡"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "Ù?ساؚÙ?"
+
 msgid "Plugins"
 msgstr "اÙ?Ù?Ù?Ø­Ù?ات"
 
diff -rupN vdr-1.7.16/po/ca_ES.po vdr-1.7.16-new/po/ca_ES.po
--- vdr-1.7.16/po/ca_ES.po	2010-09-19 14:44:29.000000000 +0200
+++ vdr-1.7.16-new/po/ca_ES.po	2010-09-19 23:43:09.587512359 +0200
@@ -10,7 +10,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Catalanian\n"
@@ -1102,6 +1102,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Sortida d'emergència"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "anterior"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/cs_CZ.po vdr-1.7.16-new/po/cs_CZ.po
--- vdr-1.7.16/po/cs_CZ.po	2010-09-19 14:44:29.000000000 +0200
+++ vdr-1.7.16-new/po/cs_CZ.po	2010-09-19 23:43:09.628512095 +0200
@@ -9,7 +9,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.14\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-05-06 11:00+0200\n"
 "Last-Translator: Radek ŠťastnÜ <dedkus@gmail.com>\n"
 "Language-Team: Czech\n"
@@ -1101,6 +1101,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Nouzové ukončení"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "jako naposledy"
+
 msgid "Plugins"
 msgstr "Moduly"
 
diff -rupN vdr-1.7.16/po/da_DK.po vdr-1.7.16-new/po/da_DK.po
--- vdr-1.7.16/po/da_DK.po	2010-09-19 14:44:29.000000000 +0200
+++ vdr-1.7.16-new/po/da_DK.po	2010-09-19 23:43:09.671511896 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
 "Language-Team: Danish\n"
@@ -1099,6 +1099,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Nødudgang"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "som før"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/de_DE.po vdr-1.7.16-new/po/de_DE.po
--- vdr-1.7.16/po/de_DE.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/de_DE.po	2010-09-19 23:43:09.672512168 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-01-16 16:46+0100\n"
 "Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
 "Language-Team: German\n"
@@ -1099,6 +1099,10 @@  msgstr "Rundum zappen"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Notausstieg"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "wie vorher"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/el_GR.po vdr-1.7.16-new/po/el_GR.po
--- vdr-1.7.16/po/el_GR.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/el_GR.po	2010-09-19 23:43:09.711511528 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
 "Language-Team: Greek\n"
@@ -1099,6 +1099,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr ""
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "ÆÜðéíãê äéáêïðÞ (ä)"
+
 msgid "Plugins"
 msgstr "ÅðåêôÜóåéò"
 
diff -rupN vdr-1.7.16/po/es_ES.po vdr-1.7.16-new/po/es_ES.po
--- vdr-1.7.16/po/es_ES.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/es_ES.po	2010-09-19 23:43:09.712511762 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-03-02 19:02+0100\n"
 "Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
 "Language-Team: Spanish\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Salida de emergencia"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "anterior"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/et_EE.po vdr-1.7.16-new/po/et_EE.po
--- vdr-1.7.16/po/et_EE.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/et_EE.po	2010-09-19 23:43:09.755512152 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
 "Language-Team: Estonian\n"
@@ -1099,6 +1099,10 @@  msgstr "Kanalite ringkerimine"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Hädaväljumine"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "endine"
+
 msgid "Plugins"
 msgstr "Laiendusmoodulid"
 
diff -rupN vdr-1.7.16/po/fi_FI.po vdr-1.7.16-new/po/fi_FI.po
--- vdr-1.7.16/po/fi_FI.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/fi_FI.po	2010-09-19 23:43:09.754512433 +0200
@@ -10,7 +10,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-08-15 15:52+0200\n"
 "Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
 "Language-Team: Finnish\n"
@@ -1102,6 +1102,10 @@  msgstr "Kanavien rullaus"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "KÀytÀ hÀtÀsammutusta"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "edellinen"
+
 msgid "Plugins"
 msgstr "Laajennokset"
 
diff -rupN vdr-1.7.16/po/fr_FR.po vdr-1.7.16-new/po/fr_FR.po
--- vdr-1.7.16/po/fr_FR.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/fr_FR.po	2010-09-19 23:43:09.809511788 +0200
@@ -13,7 +13,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-02-27 18:14+0100\n"
 "Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
 "Language-Team: French\n"
@@ -1105,6 +1105,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Arrêt d'urgence"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "comme avant"
+
 msgid "Plugins"
 msgstr "Greffons"
 
diff -rupN vdr-1.7.16/po/hr_HR.po vdr-1.7.16-new/po/hr_HR.po
--- vdr-1.7.16/po/hr_HR.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/hr_HR.po	2010-09-19 23:43:09.834512179 +0200
@@ -9,7 +9,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-03-17 19:00+0100\n"
 "Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
 "Language-Team: Croatian\n"
@@ -1101,6 +1101,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Izlaz u sluèaju nuŸde"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "kao prethodno"
+
 msgid "Plugins"
 msgstr "Dodaci"
 
diff -rupN vdr-1.7.16/po/hu_HU.po vdr-1.7.16-new/po/hu_HU.po
--- vdr-1.7.16/po/hu_HU.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/hu_HU.po	2010-09-19 23:43:09.867511933 +0200
@@ -10,7 +10,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-12-01 21:42+0200\n"
 "Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
 "Language-Team: Hungarian\n"
@@ -1102,6 +1102,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr ""
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "ahogy az elõbb"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/it_IT.po vdr-1.7.16-new/po/it_IT.po
--- vdr-1.7.16/po/it_IT.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/it_IT.po	2010-09-19 23:43:09.883512143 +0200
@@ -1106,6 +1106,10 @@  msgstr "Riavvolgimento canali"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Uscita di emergenza"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "come prima"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/lt_LT.po vdr-1.7.16-new/po/lt_LT.po
--- vdr-1.7.16/po/lt_LT.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/lt_LT.po	2010-09-19 23:43:09.925510610 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.12\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-02-22 18:05+0200\n"
 "Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
 "Language-Team: Lithuanian\n"
@@ -1099,6 +1099,10 @@  msgstr "Kanalų pridengimas"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Avarinis iÅ¡Ä?jimas"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "kaip anksčiau"
+
 msgid "Plugins"
 msgstr "Įskiepai"
 
diff -rupN vdr-1.7.16/po/mk_MK.po vdr-1.7.16-new/po/mk_MK.po
--- vdr-1.7.16/po/mk_MK.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/mk_MK.po	2010-09-19 23:43:09.928511087 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR-1.7.14\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-03-11 00:54+0100\n"
 "Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
 "Language-Team: Macedonian <en@li.org>\n"
@@ -1100,6 +1100,10 @@  msgstr "Ð?Ñ?еЌПÑ?Ñ?ваÑ?е каМаÐ
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Ð?Ñ?еМ Озлез"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "какП пÑ?еÑ?Ñ?ПЎМП"
+
 msgid "Plugins"
 msgstr "Ð?ПЎаÑ?ПÑ?О"
 
diff -rupN vdr-1.7.16/po/nl_NL.po vdr-1.7.16-new/po/nl_NL.po
--- vdr-1.7.16/po/nl_NL.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/nl_NL.po	2010-09-19 23:43:09.951511991 +0200
@@ -11,7 +11,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-02-26 17:20+0100\n"
 "Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
 "Language-Team: Dutch\n"
@@ -1103,6 +1103,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Nooduitgang"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "zoals eerder"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/nn_NO.po vdr-1.7.16-new/po/nn_NO.po
--- vdr-1.7.16/po/nn_NO.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/nn_NO.po	2010-09-19 23:43:09.964512321 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2007-08-12 14:17+0200\n"
 "Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
 "Language-Team: Norwegian\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr ""
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "Minimumstid med inaktivitet (min)"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/pl_PL.po vdr-1.7.16-new/po/pl_PL.po
--- vdr-1.7.16/po/pl_PL.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/pl_PL.po	2010-09-19 23:43:09.952512288 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-03-09 12:59+0100\n"
 "Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
 "Language-Team:  Polish\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Wyj¶cie awaryjne"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "jak ostatnio"
+
 msgid "Plugins"
 msgstr "Wtyczki"
 
diff -rupN vdr-1.7.16/po/pt_PT.po vdr-1.7.16-new/po/pt_PT.po
--- vdr-1.7.16/po/pt_PT.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/pt_PT.po	2010-09-19 23:43:09.999512113 +0200
@@ -1100,6 +1100,10 @@  msgstr "Retroceder canais"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Saída de emergência"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "Como estava"
+
 msgid "Plugins"
 msgstr "Plugins"
 
diff -rupN vdr-1.7.16/po/ro_RO.po vdr-1.7.16-new/po/ro_RO.po
--- vdr-1.7.16/po/ro_RO.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/ro_RO.po	2010-09-19 23:43:10.017512213 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.12\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-02-11 13:38+0100\n"
 "Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
 "Language-Team: Romanian\n"
@@ -1102,6 +1102,10 @@  msgstr "Lista de canale în buclã"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Oprire de urgenþã"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "ca mai înainte"
+
 msgid "Plugins"
 msgstr "Plugin-uri"
 
diff -rupN vdr-1.7.16/po/ru_RU.po vdr-1.7.16-new/po/ru_RU.po
--- vdr-1.7.16/po/ru_RU.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/ru_RU.po	2010-09-19 23:43:10.029512021 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-12-15 14:37+0100\n"
 "Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
 "Language-Team: Russian\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "°ÒÐàØÙÝëÙ ÒëåÞÔ"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "ÚÐÚ àÐÝìèÕ"
+
 msgid "Plugins"
 msgstr "ŒÞÔãÛØ àÐáèØàÕÝØï"
 
diff -rupN vdr-1.7.16/po/sk_SK.po vdr-1.7.16-new/po/sk_SK.po
--- vdr-1.7.16/po/sk_SK.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/sk_SK.po	2010-09-19 23:43:10.058510612 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2009-09-30 12:50+0100\n"
 "Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
 "Language-Team: Slovak\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Núdzové ukonèenie"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "ako naposledy"
+
 msgid "Plugins"
 msgstr "Moduly"
 
diff -rupN vdr-1.7.16/po/sl_SI.po vdr-1.7.16-new/po/sl_SI.po
--- vdr-1.7.16/po/sl_SI.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/sl_SI.po	2010-09-19 23:43:10.082512262 +0200
@@ -8,7 +8,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-02-28 19:44+0100\n"
 "Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
 "Language-Team: Slovenian\n"
@@ -1100,6 +1100,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Izhod v sili"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "kot prej"
+
 msgid "Plugins"
 msgstr "Vstavki"
 
diff -rupN vdr-1.7.16/po/sv_SE.po vdr-1.7.16-new/po/sv_SE.po
--- vdr-1.7.16/po/sv_SE.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/sv_SE.po	2010-09-19 23:43:10.112510996 +0200
@@ -10,7 +10,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-03-12 18:25+0100\n"
 "Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
 "Language-Team: Swedish\n"
@@ -1102,6 +1102,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Oförutsedd avslutning"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "som förut"
+
 msgid "Plugins"
 msgstr "Moduler"
 
diff -rupN vdr-1.7.16/po/tr_TR.po vdr-1.7.16-new/po/tr_TR.po
--- vdr-1.7.16/po/tr_TR.po	2010-09-19 14:44:30.000000000 +0200
+++ vdr-1.7.16-new/po/tr_TR.po	2010-09-19 23:43:10.124511001 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2008-02-28 00:33+0100\n"
 "Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
 "Language-Team: Turkish\n"
@@ -1099,6 +1099,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "Acil cýkýþ"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "önceki gibi"
+
 msgid "Plugins"
 msgstr "Eklentiler"
 
diff -rupN vdr-1.7.16/po/uk_UA.po vdr-1.7.16-new/po/uk_UA.po
--- vdr-1.7.16/po/uk_UA.po	2010-09-19 14:44:31.000000000 +0200
+++ vdr-1.7.16-new/po/uk_UA.po	2010-09-19 23:43:10.146510814 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.7.7\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2010-04-25 16:35+0200\n"
 "Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
 "Language-Team: Ukrainian\n"
@@ -1099,6 +1099,10 @@  msgstr "Ð?Ñ?МеÑ?Ñ? каМалÑ?в"
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "АваÑ?Ñ?йМОй вОÑ?Ñ?ÐŽ"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "як Ñ?аМÑ?Ñ?е"
+
 msgid "Plugins"
 msgstr "Ð?ПЎÑ?лÑ? Ñ?ПзÑ?ОÑ?еММя"
 
diff -rupN vdr-1.7.16/po/zh_CN.po vdr-1.7.16-new/po/zh_CN.po
--- vdr-1.7.16/po/zh_CN.po	2010-09-19 14:44:31.000000000 +0200
+++ vdr-1.7.16-new/po/zh_CN.po	2010-09-19 23:43:10.170136497 +0200
@@ -7,7 +7,7 @@  msgid ""
 msgstr ""
 "Project-Id-Version: VDR 1.6.0\n"
 "Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
-"POT-Creation-Date: 2010-06-06 12:52+0200\n"
+"POT-Creation-Date: 2010-08-25 20:59+0200\n"
 "PO-Revision-Date: 2009-09-23 23:50+0800\n"
 "Last-Translator: Nan Feng <nfgx@21cn.com>\n"
 "Language-Team: Chinese\n"
@@ -1102,6 +1102,10 @@  msgstr ""
 msgid "Setup.Miscellaneous$Emergency exit"
 msgstr "突å?äº?件é??å?º"
 
+#, fuzzy
+msgid "Setup.Miscellaneous$Access cards on demand"
+msgstr "��"
+
 msgid "Plugins"
 msgstr "�件讟眮"
 
diff -rupN vdr-1.7.16/vdr.c vdr-1.7.16-new/vdr.c
--- vdr-1.7.16/vdr.c	2010-04-05 12:06:16.000000000 +0200
+++ vdr-1.7.16-new/vdr.c	2010-09-19 23:38:15.605139164 +0200
@@ -564,6 +564,9 @@  int main(int argc, char *argv[])
   bool IsInfoMenu = false;
   bool CheckHasProgramme = false;
   cSkin *CurrentSkin = NULL;
+  if (Setup.OnDemand) {
+    InhibitEpgScan = true; // Disable epgscan as it messes around with Access()
+  }
 
   // Load plugins:
 
@@ -836,6 +839,9 @@  int main(int argc, char *argv[])
            static time_t LastTimerCheck = 0;
            if (Now - LastTimerCheck > TIMERCHECKDELTA) { // don't do this too often
               InhibitEpgScan = false;
+              if (Setup.OnDemand) {
+                InhibitEpgScan = true; // Disable epgscan as it messes around with Access()
+              }
               static time_t DeviceUsed[MAXDEVICES] = { 0 };
               for (cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer)) {
                   bool InVpsMargin = false;