Fixed handling error status in cDvbTuner::GetFrontendStatus()

This commit is contained in:
Klaus Schmidinger 2007-02-24 11:20:42 +01:00
parent 328d8b6494
commit 50b14be807
3 changed files with 11 additions and 10 deletions

View File

@ -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

View File

@ -5091,11 +5091,13 @@ 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).
2007-02-03: Version 1.5.1

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: dvbdevice.c 1.162 2007/01/13 11:37:00 kls Exp $
* $Id: dvbdevice.c 1.163 2007/02/24 11:20:42 kls Exp $
*/
#include "dvbdevice.h"
@ -155,15 +155,13 @@ 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)
continue;
while (1) {
int stat = ioctl(fd_frontend, FE_READ_STATUS, &Status);
if (stat == 0)
return true;
if (stat > 0 || errno != EINTR)
break;
}
} while (0);
return false;
}