diff options
-rw-r--r-- | CONTRIBUTORS | 3 | ||||
-rw-r--r-- | HISTORY | 5 | ||||
-rw-r--r-- | config.h | 6 | ||||
-rw-r--r-- | eitscan.c | 22 |
4 files changed, 21 insertions, 15 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d2f715dd..37de3a0f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -887,3 +887,6 @@ Pedro Miguel Sequeira de Justo Teixeira <pedro.miguel.teixeira@bigfoot.com> Antonino Sergi <voyaser@tiscalinet.it> for adding 'StreamType' setting to CAM communication + +Martin Holst <holstm@gmx.de> + for reporting a lockup in 1.3.0 when the EPG scanner kicks in @@ -2537,3 +2537,8 @@ Video Disk Recorder Revision History - Limited the line length in the EPG bugfix report, which appears to fix a buffer overflow that caused a crash when cleaning up the EPG data (at 05:00 in the morning). + +2004-01-05: Version 1.3.1 + +- Fixed a lockup in the EPG scanner when no non-primary device was available + (thanks to Martin Holst for reporting this one). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.178 2003/12/27 13:57:56 kls Exp $ + * $Id: config.h 1.179 2004/01/05 09:56:54 kls Exp $ */ #ifndef __CONFIG_H @@ -19,8 +19,8 @@ #include "device.h" #include "tools.h" -#define VDRVERSION "1.3.0" -#define VDRVERSNUM 10300 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "1.3.1" +#define VDRVERSNUM 10301 // Version * 10000 + Major * 100 + Minor #define MAXPRIORITY 99 #define MAXLIFETIME 99 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: eitscan.c 1.15 2004/01/04 12:28:00 kls Exp $ + * $Id: eitscan.c 1.16 2004/01/05 09:51:25 kls Exp $ */ #include "eitscan.h" @@ -110,13 +110,11 @@ void cEITScanner::Process(void) 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 @@ void cEITScanner::Process(void) AnyDeviceSwitched = true; } } - else - break; } } } + else + break; } if (ScanData && !AnyDeviceSwitched) { scanList->Del(ScanData); @@ -146,9 +144,9 @@ void cEITScanner::Process(void) break; } } - Channels.Unlock(); - lastScan = time(NULL); } + lastScan = time(NULL); + Channels.Unlock(); } } } |