diff --git a/packages/3rdparty/multimedia/vdr-sc/patches/vdr-sc-620-dynamite.patch b/packages/3rdparty/multimedia/vdr-sc/patches/vdr-sc-620-dynamite.patch deleted file mode 100644 index 5da3d278f1..0000000000 --- a/packages/3rdparty/multimedia/vdr-sc/patches/vdr-sc-620-dynamite.patch +++ /dev/null @@ -1,282 +0,0 @@ -diff -r 442eee2f550d device-hd.c ---- a/device-hd.c Sun Oct 02 21:09:13 2011 +0200 -+++ b/device-hd.c Thu Oct 13 00:15:52 2011 +0200 -@@ -50,12 +50,18 @@ - { - if(!initial) cCondWait::SleepMs(150); - cMutexLock lock(&cafdMutex); -+// BEGIN vdr-plugin-dynamite -+ if(fd_ca < 0) return false; -+// END vdr-plugin-dynamite - return ioctl(fd_ca,CA_SET_DESCR,ca_descr)>=0; - } - - bool cScDvbHdFfDevice::SetCaPid(ca_pid_t *ca_pid) - { - cMutexLock lock(&cafdMutex); -+// BEGIN vdr-plugin-dynamite -+ if(fd_ca < 0) return false; -+// END vdr-plugin-dynamite - return ioctl(fd_ca,CA_SET_PID,ca_pid)>=0; - } - -diff -r 442eee2f550d device-sd.c ---- a/device-sd.c Sun Oct 02 21:09:13 2011 +0200 -+++ b/device-sd.c Thu Oct 13 00:15:52 2011 +0200 -@@ -59,12 +59,18 @@ - bool cScDvbSdFfDevice::SetCaDescr(ca_descr_t *ca_descr, bool initial) - { - cMutexLock lock(&cafdMutex); -+// BEGIN vdr-plugin-dynamite -+ if(fd_ca < 0) return false; -+// END vdr-plugin-dynamite - return ioctl(fd_ca,CA_SET_DESCR,ca_descr)>=0; - } - - bool cScDvbSdFfDevice::SetCaPid(ca_pid_t *ca_pid) - { - cMutexLock lock(&cafdMutex); -+// BEGIN vdr-plugin-dynamite -+ if(fd_ca < 0) return false; -+// END vdr-plugin-dynamite - return ioctl(fd_ca,CA_SET_PID,ca_pid)>=0; - } - -@@ -88,6 +94,9 @@ - - void cScDvbSdFfDevice::DumpAV(void) - { -+// BEGIN vdr-plugin-dynamite -+ if(fd_ca < 0) return; -+// END vdr-plugin-dynamite - if(LOG(L_CORE_AV7110)) { - #define CODEBASE (0x2e000404+0x1ce00) - cMutexLock lock(&cafdMutex); -diff -r 442eee2f550d device-tmpl.c ---- a/device-tmpl.c Sun Oct 02 21:09:13 2011 +0200 -+++ b/device-tmpl.c Thu Oct 13 00:15:52 2011 +0200 -@@ -62,6 +62,14 @@ - #else - cCam *Cam(void) { return cam; } - #endif //!SASC -+// BEGIN vdr-plugin-dynamite -+private: -+ bool lateInit; -+public: -+#ifdef __DYNAMIC_DEVICE_PROBE -+ virtual bool SetIdleDevice(bool Idle, bool TestOnly); -+#endif -+// END vdr-plugin-dynamite - }; - - SCDEVICE::SCDEVICE(cScDevicePlugin *DevPlugin, int Adapter, int Frontend, int cafd) -@@ -75,6 +83,9 @@ - :DVBDEVICE(Adapter) - #endif //APIVERSNUM >= 10711 - { -+// BEGIN vdr-plugin-dynamite -+ lateInit = false; -+// END vdr-plugin-dynamite - #ifndef SASC - tsBuffer=0; hwciadapter=0; - #endif -@@ -88,10 +99,18 @@ - #ifdef SASC - cam=new cCam(this,Adapter,0,devId,devplugin,softcsa,fullts); - #endif // !SASC -+// BEGIN vdr-plugin-dynamite -+ cScDevices::AddScDevice(this); -+ if (cScDevices::AutoLateInit()) -+ LateInit(); -+// END vdr-plugin-dynamite - } - - SCDEVICE::~SCDEVICE() - { -+// BEGIN vdr-plugin-dynamite -+ cScDevices::DelScDevice(this); -+// END vdr-plugin-dynamite - #ifndef SASC - DetachAllReceivers(); - Cancel(3); -@@ -139,6 +158,9 @@ - - void SCDEVICE::LateInit(void) - { -+ if (lateInit) -+ return; -+ lateInit = true; - int n=CardIndex(); - if(DeviceNumber()!=n) - PRINTF(L_GEN_ERROR,"CardIndex - DeviceNumber mismatch! Put SC plugin first on VDR commandline!"); -@@ -155,8 +177,17 @@ - if(fullts) PRINTF(L_GEN_INFO,"Enabling hybrid full-ts mode on card %s",devId); - else PRINTF(L_GEN_INFO,"Using software decryption on card %s",devId); - } -- if(fd_ca2>=0) hwciadapter=cDvbCiAdapter::CreateCiAdapter(this,fd_ca2); -- cam=new cCam(this,DVB_DEV_SPEC,devId,devplugin,softcsa,fullts); -+// BEGIN vdr-plugin-dynamite -+#ifdef __DYNAMIC_DEVICE_PROBE -+ cDevice *cidev = parentDevice ? parentDevice : this; -+#else -+ cDevice *cidev = this; -+#endif -+ if(fd_ca2>=0) hwciadapter=cDvbCiAdapter::CreateCiAdapter(cidev,fd_ca2); -+ if (cidev != this) -+ fd_ca2 = -1; // will be closed by patched cDvbCiAdapter -+ cam=new cCam(cidev,DVB_DEV_SPEC,devId,devplugin,softcsa,fullts); -+// END vdr-plugin-dynamite - } - - bool SCDEVICE::HasCi(void) -@@ -225,6 +256,36 @@ - return false; - } - -+// BEGIN vdr-plugin-dynamite -+#ifdef __DYNAMIC_DEVICE_PROBE -+bool SCDEVICE::SetIdleDevice(bool Idle, bool TestOnly) -+{ -+ if (TestOnly) { -+ if (hwciadapter) -+ return hwciadapter->SetIdle(Idle, true); -+ return DVBDEVICE::SetIdleDevice(Idle, true); -+ } -+ if (hwciadapter && !hwciadapter->SetIdle(Idle, false)) -+ return false; -+ if (!DVBDEVICE::SetIdleDevice(Idle, false)) { -+ if (hwciadapter) -+ hwciadapter->SetIdle(!Idle, false); -+ return false; -+ } -+ if (Idle) { -+ if (fd_ca >= 0) -+ close(fd_ca); -+ fd_ca = -1; -+ } -+ else { -+ if (fd_ca < 0) -+ fd_ca = cScDevices::DvbOpen(DEV_DVB_CA,adapter,frontend,O_RDWR); -+ } -+ return true; -+} -+#endif -+// END vdr-plugin-dynamite -+ - #endif // !SASC - - #undef SCDEVICE -diff -r 442eee2f550d device.c ---- a/device.c Sun Oct 02 21:09:13 2011 +0200 -+++ b/device.c Thu Oct 13 00:15:52 2011 +0200 -@@ -285,6 +285,58 @@ - - int cScDevices::budget=0; - -+// BEGIN vdr-plugin-dynamite -+// dynamite fills the vdr::cDevice::device array with vdr::plugin::dynamite::cDynamicDevice -+// we have to maintain our own list of sc-devices -+int cScDevices::numScDevices = 0; -+cDevice *cScDevices::scdevice[MAXDEVICES] = { NULL }; -+bool cScDevices::autoLateInit = false; -+ -+int cScDevices::NumScDevices(void) -+{ -+ return numScDevices; -+} -+ -+cDevice *cScDevices::GetScDevice(int CardIndex) -+{ -+ for (int n = 0; n < numScDevices; n++) { -+ if (scdevice[n] && (scdevice[n]->CardIndex() == CardIndex)) -+ return scdevice[n]; -+ } -+ return NULL; -+} -+ -+void cScDevices::AddScDevice(cDevice *Device) -+{ -+ if (Device == NULL) -+ return; -+ int i = 0; -+ while ((i < numScDevices) && (i < MAXDEVICES) && (scdevice[i] != Device)) -+ i++; -+ if (i < MAXDEVICES) { -+ scdevice[i] = Device; -+ if (i == numScDevices) -+ numScDevices++; -+ } -+ else -+ esyslog("too many sc-devices!"); -+} -+ -+void cScDevices::DelScDevice(cDevice *Device) -+{ -+ if (Device == NULL) -+ return; -+ int i = 0; -+ while ((i < numScDevices) && (i < MAXDEVICES)) { -+ if (scdevice[i] == Device) { -+ scdevice[i] = NULL; -+ break; -+ } -+ i++; -+ } -+} -+// END vdr-plugin-dynamite -+ - void cScDevices::DvbName(const char *Name, int a, int f, char *buffer, int len) - { - snprintf(buffer,len,"%s%d/%s%d",DEV_DVB_ADAPTER,a,Name,f); -@@ -393,17 +445,22 @@ - { - if(ScSetup.ForceTransfer) - SetTransferModeForDolbyDigital(2); -- for(int n=cDevice::NumDevices(); --n>=0;) { -- cDevice *dev=cDevice::GetDevice(n); -+// BEGIN vdr-plugin-dynamite -+ for(int n=NumScDevices(); --n>=0;) { -+ cDevice *dev=GetScDevice(n); - for(cScDevicePlugin *dp=devplugins.First(); dp; dp=devplugins.Next(dp)) - if(dp->LateInit(dev)) break; - } -+ autoLateInit = true; -+// END vdr-plugin-dynamite - } - - void cScDevices::Shutdown(void) - { -- for(int n=cDevice::NumDevices(); --n>=0;) { -- cDevice *dev=cDevice::GetDevice(n); -+// BEGIN vdr-plugin-dynamite -+ for(int n=NumScDevices(); --n>=0;) { -+ cDevice *dev=GetScDevice(n); -+// END vdr-plugin-dynamite - for(cScDevicePlugin *dp=devplugins.First(); dp; dp=devplugins.Next(dp)) - if(dp->EarlyShutdown(dev)) break; - } -diff -r 442eee2f550d device.h ---- a/device.h Sun Oct 02 21:09:13 2011 +0200 -+++ b/device.h Thu Oct 13 00:15:52 2011 +0200 -@@ -84,6 +84,21 @@ - static bool ForceBudget(int n); - static void DvbName(const char *Name, int a, int f, char *buffer, int len); - static int DvbOpen(const char *Name, int a, int f, int Mode, bool ReportError=false); -+ -+// BEGIN vdr-plugin-dynamite -+// dynamite fills the vdr::cDevice::device array with vdr::plugin::dynamite::cDynamicDevice -+// we have to maintain our own list of sc-devices -+private: -+ static int numScDevices; -+ static cDevice *scdevice[MAXDEVICES]; -+ static bool autoLateInit; -+public: -+ static int NumScDevices(void); -+ static cDevice *GetScDevice(int CardIndex); -+ static void AddScDevice(cDevice *Device); -+ static void DelScDevice(cDevice *Device); -+ static bool AutoLateInit() { return autoLateInit; }; -+// END vdr-plugin-dynamite - }; - - // ----------------------------------------------------------------