mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Removed the "bondedMasterFailed" mechanism from cDvbTuner
This commit is contained in:
parent
06b8fe94ef
commit
0b4069c91f
@ -2880,3 +2880,7 @@ Marcus Roscher <dad401@gmx.de>
|
|||||||
Reinhard Mantey <geronimo013@gmx.de>
|
Reinhard Mantey <geronimo013@gmx.de>
|
||||||
for reporting a problem with character comparisons in
|
for reporting a problem with character comparisons in
|
||||||
cSubtitleObject::DecodeCharacterString()
|
cSubtitleObject::DecodeCharacterString()
|
||||||
|
|
||||||
|
Michael Schneider <vdrportal_midas@gmx.de>
|
||||||
|
for reporting a problem with the EPG scan in case a transponder is not receivable in
|
||||||
|
a setup with bonded devices
|
||||||
|
3
HISTORY
3
HISTORY
@ -7099,3 +7099,6 @@ Video Disk Recorder Revision History
|
|||||||
- Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
|
- Renamed the function cString::sprintf(const char *fmt, va_list &ap) to vsprintf(),
|
||||||
because it might inadvertently be called with a 'char *' as the second argument on
|
because it might inadvertently be called with a 'char *' as the second argument on
|
||||||
some compilers and cause a crash (reported by Sundararaj Reel).
|
some compilers and cause a crash (reported by Sundararaj Reel).
|
||||||
|
- Removed the "bondedMasterFailed" mechanism from cDvbTuner, because it caused
|
||||||
|
problems with the EPG scan in case a transponder is not receivable in a setup with
|
||||||
|
bonded devices (reported by Michael Schneider).
|
||||||
|
28
dvbdevice.c
28
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 2.70 2012/04/04 09:49:12 kls Exp $
|
* $Id: dvbdevice.c 2.71 2012/05/09 08:33:59 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -303,7 +303,6 @@ private:
|
|||||||
cCondVar newSet;
|
cCondVar newSet;
|
||||||
cDvbTuner *bondedTuner;
|
cDvbTuner *bondedTuner;
|
||||||
bool bondedMaster;
|
bool bondedMaster;
|
||||||
bool bondedMasterFailed;
|
|
||||||
bool SetFrontendType(const cChannel *Channel);
|
bool SetFrontendType(const cChannel *Channel);
|
||||||
cString GetBondingParams(const cChannel *Channel = NULL) const;
|
cString GetBondingParams(const cChannel *Channel = NULL) const;
|
||||||
void ClearEventQueue(void) const;
|
void ClearEventQueue(void) const;
|
||||||
@ -348,7 +347,6 @@ cDvbTuner::cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int
|
|||||||
tunerStatus = tsIdle;
|
tunerStatus = tsIdle;
|
||||||
bondedTuner = NULL;
|
bondedTuner = NULL;
|
||||||
bondedMaster = false;
|
bondedMaster = false;
|
||||||
bondedMasterFailed = false;
|
|
||||||
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
@ -438,12 +436,8 @@ cDvbTuner *cDvbTuner::GetBondedMaster(void)
|
|||||||
if (!bondedTuner)
|
if (!bondedTuner)
|
||||||
return this; // an unbonded tuner is always "master"
|
return this; // an unbonded tuner is always "master"
|
||||||
cMutexLock MutexLock(&bondMutex);
|
cMutexLock MutexLock(&bondMutex);
|
||||||
if (bondedMaster) {
|
if (bondedMaster)
|
||||||
if (!bondedMasterFailed)
|
|
||||||
return this;
|
return this;
|
||||||
else
|
|
||||||
bondedMaster = false;
|
|
||||||
}
|
|
||||||
// This tuner is bonded, but it's not the master, so let's see if there is a master at all:
|
// This tuner is bonded, but it's not the master, so let's see if there is a master at all:
|
||||||
if (cDvbTuner *t = bondedTuner) {
|
if (cDvbTuner *t = bondedTuner) {
|
||||||
while (t != this) {
|
while (t != this) {
|
||||||
@ -453,18 +447,9 @@ cDvbTuner *cDvbTuner::GetBondedMaster(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// None of the other bonded tuners is master, so make this one the master:
|
// None of the other bonded tuners is master, so make this one the master:
|
||||||
cDvbTuner *t = this;
|
bondedMaster = true;
|
||||||
if (bondedMasterFailed) {
|
dsyslog("tuner %d/%d is now bonded master", adapter, frontend);
|
||||||
// This one has failed, so switch to the next one:
|
return this;
|
||||||
t = bondedTuner;
|
|
||||||
t->bondedMasterFailed = false;
|
|
||||||
cMutexLock MutexLock(&t->mutex);
|
|
||||||
t->channel = channel;
|
|
||||||
t->tunerStatus = tsSet;
|
|
||||||
}
|
|
||||||
t->bondedMaster = true;
|
|
||||||
dsyslog("tuner %d/%d is now bonded master", t->adapter, t->frontend);
|
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
||||||
@ -878,9 +863,6 @@ void cDvbTuner::Action(void)
|
|||||||
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
||||||
lastTimeoutReport = time(NULL);
|
lastTimeoutReport = time(NULL);
|
||||||
}
|
}
|
||||||
cMutexLock MutexLock(&bondMutex);
|
|
||||||
if (bondedTuner && bondedMaster)
|
|
||||||
bondedMasterFailed = true; // give an other tuner a chance in case the sat cable was disconnected
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
WaitTime = 100; // allows for a quick change from tsTuned to tsLocked
|
WaitTime = 100; // allows for a quick change from tsTuned to tsLocked
|
||||||
|
Loading…
Reference in New Issue
Block a user