summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--dvbdevice.c15
3 files changed, 11 insertions, 9 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 4743d057..fd0ad595 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1117,6 +1117,7 @@ Reinhard Nissl <rnissl@gmx.de>
for fixing a possible crash in remux.c on 64-bit machines
for making cCommand::Execute() use cPipe instead of popen() to avoid problems
with open file handles when starting background commands
+ for fixing handling error status in cDvbTuner::GetFrontendStatus()
Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the
diff --git a/HISTORY b/HISTORY
index 7d71a1c7..d2c4b401 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5036,8 +5036,10 @@ Video Disk Recorder Revision History
with open file handles when starting background commands (thanks to Reinhard
Nissl).
-2007-02-17: Version 1.4.5-2
+2007-02-24: Version 1.4.5-2
- Removed 'assert(0)' from cDvbSpuDecoder::setTime() (thanks to Marco Schlüßler).
- Fixed a possible crash when loading an invalid XPM file (thanks to Martin Wache).
- Updated satellite names in 'sources.conf' (thanks to Thilo Wunderlich).
+- Fixed handling error status in cDvbTuner::GetFrontendStatus() (thanks to
+ Reinhard Nissl).
diff --git a/dvbdevice.c b/dvbdevice.c
index fb8ec938..955483ea 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.c 1.160 2006/08/14 09:38:32 kls Exp $
+ * $Id: dvbdevice.c 1.160.1.1 2007/02/24 11:10:14 kls Exp $
*/
#include "dvbdevice.h"
@@ -157,15 +157,14 @@ bool cDvbTuner::GetFrontendStatus(fe_status_t &Status, int TimeoutMs)
; // just to clear the event queue - we'll read the actual status below
}
}
- do {
- int stat = ioctl(fd_frontend, FE_READ_STATUS, &Status);
- if (stat == 0)
- return true;
- if (stat < 0) {
- if (errno == EINTR)
+ while (1) {
+ int stat = ioctl(fd_frontend, FE_READ_STATUS, &Status);
+ if (stat == 0)
+ return true;
+ if (stat < 0 && errno == EINTR)
continue;
+ break;
}
- } while (0);
return false;
}