summaryrefslogtreecommitdiff
path: root/multimedia/vdr/files/patch-dvbdevice.c
blob: 99252462694c7a89120ff7e25c930952a3448b12 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--- dvbdevice.c.orig
+++ dvbdevice.c
@@ -7,6 +7,7 @@
  * $Id: dvbdevice.c 2.71 2012/05/09 08:33:59 kls Exp $
  */
 
+#include <stdint.h>
 #include "dvbdevice.h"
 #include <ctype.h>
 #include <errno.h>
@@ -579,7 +580,7 @@ int cDvbTuner::GetSignalQuality(void) co
      while (1) {
            if (ioctl(fd_frontend, FE_READ_SNR, &Snr) != -1)
               break;
-           if (errno == EOPNOTSUPP) {
+           if (errno == EOPNOTSUPP || errno == ENXIO) {
               Snr = 0xFFFF;
               HasSnr = false;
               break;
@@ -592,7 +593,7 @@ int cDvbTuner::GetSignalQuality(void) co
      while (1) {
            if (ioctl(fd_frontend, FE_READ_BER, &Ber) != -1)
               break;
-           if (errno == EOPNOTSUPP) {
+           if (errno == EOPNOTSUPP || errno == ENXIO) {
               Ber = 0;
               HasBer = false;
               break;
@@ -605,7 +606,7 @@ int cDvbTuner::GetSignalQuality(void) co
      while (1) {
            if (ioctl(fd_frontend, FE_READ_UNCORRECTED_BLOCKS, &Unc) != -1)
               break;
-           if (errno == EOPNOTSUPP) {
+           if (errno == EOPNOTSUPP || errno == ENXIO) {
               Unc = 0;
               HasUnc = false;
               break;
@@ -732,7 +733,7 @@ bool cDvbTuner::SetFrontend(void)
         if (const cDiseqc *diseqc = Diseqcs.Get(device->CardIndex() + 1, channel.Source(), frequency, dtp.Polarization(), &scr)) {
            frequency -= diseqc->Lof();
            if (diseqc != lastDiseqc || diseqc->IsScr()) {
-              if (GetBondedMaster() == this) {
+              if (!bondedTuner || bondedMaster) {
                  ExecuteDiseqc(diseqc, &frequency);
                  if (frequency == 0)
                     return false;
@@ -758,7 +759,7 @@ bool cDvbTuner::SetFrontend(void)
            tone = SEC_TONE_ON;
            }
         int volt = (dtp.Polarization() == 'V' || dtp.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
-        if (GetBondedMaster() != this) {
+        if (bondedTuner && !bondedMaster) {
            tone = SEC_TONE_OFF;
            volt = SEC_VOLTAGE_13;
            }