summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2012-01-08 14:32:39 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2012-01-08 14:32:39 +0100
commit2b3821cc88e3caf087ec10246d9e9239270d3c60 (patch)
tree1f1e0017befeadb5326f91ffff30d2c5662ae654
parentacaa5494041afad36ba2b8c32af36b70ca6cf88e (diff)
downloadvdr-2b3821cc88e3caf087ec10246d9e9239270d3c60.tar.gz
vdr-2b3821cc88e3caf087ec10246d9e9239270d3c60.tar.bz2
cDvbTuner::ExecuteDiseqc() now makes sure only one tuner sends SCR commands at any given time
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY2
-rw-r--r--dvbdevice.c7
3 files changed, 9 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 482a74db..b381411a 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2742,6 +2742,7 @@ Milan Cvijanovic <elcom_cvijo@hotmail.com>
Frank Neumann <frank.neumann@hp.com>
for suggesting to reduce the thread and I/O priority cCuttingThread::Action()
+ for reporting a problem with tuning timeouts when using SCR with multiple tuners
Gerald Dachs <vdr@dachsweb.de>
for reporting a problem with checking for minimum line length of 21 characters in
diff --git a/HISTORY b/HISTORY
index 70e14e00..2108f02d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6801,3 +6801,5 @@ Video Disk Recorder Revision History
DTV_ENUM_DELSYS call. With older drivers it will fall back to one delivery
system per frontend.
- Updated the Hungarian language texts (thanks to István Füley).
+- cDvbTuner::ExecuteDiseqc() now makes sure only one tuner sends SCR commands
+ at any given time (reported by Frank Neumann).
diff --git a/dvbdevice.c b/dvbdevice.c
index c93328f5..acd71264 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.51 2012/01/07 10:42:47 kls Exp $
+ * $Id: dvbdevice.c 2.52 2012/01/08 14:30:04 kls Exp $
*/
#include "dvbdevice.h"
@@ -642,6 +642,9 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
lnbPowerTurnedOn = true;
}
+ static cMutex Mutex;
+ if (Diseqc->IsScr())
+ Mutex.Lock();
struct dvb_diseqc_master_cmd cmd;
const char *CurrentAction = NULL;
for (;;) {
@@ -662,6 +665,8 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
}
if (scr)
ResetToneAndVoltage(); // makes sure we don't block the bus!
+ if (Diseqc->IsScr())
+ Mutex.Unlock();
}
void cDvbTuner::ResetToneAndVoltage(void)