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
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@xxxxxxx>\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@xxxxxxxxxxx>\n" "Language-Team: Arabic <ar@xxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\n" "Language-Team: Macedonian <en@xxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxx>\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@xxxxxxx>\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@xxxxxxxxx>\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@xxxxxxx>\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@xxxxxxxx>\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;
_______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr