diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2013-02-14 13:21:34 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-02-14 13:21:34 +0100 |
commit | 62dfd2f996cb9480ea2c1db054a2fa657de0900b (patch) | |
tree | f5db8881db9705ca3dc2fd77269332f706dbe950 | |
parent | 9455b9a2b09d12746e4de1ba7f47d9383ecda0a8 (diff) | |
download | vdr-62dfd2f996cb9480ea2c1db054a2fa657de0900b.tar.gz vdr-62dfd2f996cb9480ea2c1db054a2fa657de0900b.tar.bz2 |
No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality()
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | dvbdevice.c | 14 |
2 files changed, 7 insertions, 10 deletions
@@ -7612,3 +7612,6 @@ Video Disk Recorder Revision History - Updated the Lithuanian OSD texts (thanks to Valdemaras Pipiras). - The timeout for trying to switch to a valid programme is now reset immediately once a programme has been found. +- No longer checking for EOPNOTSUPP in cDvbTuner::GetSignalQuality() to avoid breaking + this function in case the driver suddenly decides to return a different errno value + if an operation is not supported. diff --git a/dvbdevice.c b/dvbdevice.c index 27482e8b..af374c5d 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 2.77 2012/12/30 13:08:41 kls Exp $ + * $Id: dvbdevice.c 2.78 2013/02/14 13:21:34 kls Exp $ */ #include "dvbdevice.h" @@ -583,15 +583,13 @@ int cDvbTuner::GetSignalQuality(void) const while (1) { if (ioctl(fd_frontend, FE_READ_SNR, &Snr) != -1) break; - if (errno == EOPNOTSUPP) { + if (errno != EINTR) { Snr = 0xFFFF; #ifdef DEBUG_SIGNALQUALITY HasSnr = false; #endif break; } - if (errno != EINTR) - return -1; } #ifdef DEBUG_SIGNALQUALITY bool HasBer = true; @@ -600,15 +598,13 @@ int cDvbTuner::GetSignalQuality(void) const while (1) { if (ioctl(fd_frontend, FE_READ_BER, &Ber) != -1) break; - if (errno == EOPNOTSUPP) { + if (errno != EINTR) { Ber = 0; #ifdef DEBUG_SIGNALQUALITY HasBer = false; #endif break; } - if (errno != EINTR) - return -1; } #ifdef DEBUG_SIGNALQUALITY bool HasUnc = true; @@ -617,15 +613,13 @@ int cDvbTuner::GetSignalQuality(void) const while (1) { if (ioctl(fd_frontend, FE_READ_UNCORRECTED_BLOCKS, &Unc) != -1) break; - if (errno == EOPNOTSUPP) { + if (errno != EINTR) { Unc = 0; #ifdef DEBUG_SIGNALQUALITY HasUnc = false; #endif break; } - if (errno != EINTR) - return -1; } uint16_t MaxSnr = 0xFFFF; // Let's assume the default is using the entire range. // Use the subsystemId to identify individual devices in case they need |