summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2004-01-05 09:56:54 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2004-01-05 09:56:54 +0100
commit113957107e0cbd98498339804d7dcdba4449761e (patch)
treef74d93754e7ca6f989fa38637b33245838cc3241
parenta80709f1ddfe77667cf4d149343d3497593b1ca3 (diff)
downloadvdr-113957107e0cbd98498339804d7dcdba4449761e.tar.gz
vdr-113957107e0cbd98498339804d7dcdba4449761e.tar.bz2
Fixed a lockup in the EPG scanner when no non-primary device was available
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY5
-rw-r--r--config.h6
-rw-r--r--eitscan.c22
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
diff --git a/HISTORY b/HISTORY
index 053caf66..98a48efe 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/config.h b/config.h
index 08368e4c..494cca3d 100644
--- a/config.h
+++ b/config.h
@@ -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
diff --git a/eitscan.c b/eitscan.c
index d4d1e8f3..755bddf1 100644
--- a/eitscan.c
+++ b/eitscan.c
@@ -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();
}
}
}