Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: First experiences with vdr 1.3.0 and UPT-Error



Martin Holst wrote:
> 
> Hi
> 
> I've installed vdr 1.3 and tested heavily zapping on the secondary card
> while recording on the first card (this situation produces UPT-errors with vdr
> 1.1.28-1.2.6). With 1.3.0 I get _no_ UPT error in this situation. I can't say,
> that this error is gone. But at least in my case it prevent the UPT-error in
> the described case.
> 
> But I have some restarts. In the syslog I only found "watchdog expired" and
> nothing more. I will increase the watchdog timer (in the moment I have 30
> seconds) and will continue testing.

This was caused by the EPG scanner when no non-primary device was available.
The attached patch fixes this.
I'll do some other fixes and enhancements today and tomorrow, and then will
release a version 1.3.1.

Klaus
--- eitscan.c	2004/01/04 14:54:01	1.15
+++ eitscan.c	2004/01/05 09:51:25
@@ -110,13 +110,11 @@
            for (bool AnyDeviceSwitched = false; !AnyDeviceSwitched; ) {
                cScanData *ScanData = NULL;
                for (int i = 0; i < cDevice::NumDevices(); i++) {
-                   cDevice *Device = cDevice::GetDevice(i);
-                   if (Device) {
-                      if (Device != cDevice::PrimaryDevice() || (cDevice::NumDevices() == 1 && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) {
-                         if (!(Device->Receiving(true) || Device->Replaying())) {
-                            if (!ScanData)
-                               ScanData = scanList->First();
-                            if (ScanData) {
+                   if (ScanData || (ScanData = scanList->First()) != NULL) {
+                      cDevice *Device = cDevice::GetDevice(i);
+                      if (Device) {
+                         if (Device != cDevice::PrimaryDevice() || (cDevice::NumDevices() == 1 && Setup.EPGScanTimeout && now - lastActivity > Setup.EPGScanTimeout * 3600)) {
+                            if (!(Device->Receiving(true) || Device->Replaying())) {
                                cChannel *Channel = ScanData->GetChannel();
                                //XXX if (Device->ProvidesTransponder(Channel)) {
                                if ((!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= 0x0100) && Device->ProvidesTransponder(Channel)) { //XXX temporary for the 'sky' plugin
@@ -130,11 +128,11 @@
                                   AnyDeviceSwitched = true;
                                   }
                                }
-                            else
-                               break;
                             }
                          }
                       }
+                   else
+                      break;
                    }
                if (ScanData && !AnyDeviceSwitched) {
                   scanList->Del(ScanData);
@@ -146,9 +144,9 @@
                   break;
                   }
                }
-           Channels.Unlock();
-           lastScan = time(NULL);
            }
+        lastScan = time(NULL);
+        Channels.Unlock();
         }
      }
 }

Home | Main Index | Thread Index