diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2020-12-12 10:31:52 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2020-12-12 10:31:52 +0100 |
commit | dffeabbacb5f36d514a8e3702f73e736c71ad099 (patch) | |
tree | a6fcb261b187efc207363c724f9a3674d25dacfb | |
parent | 9fa7de20368fe2cc517f0c2c43088d051e5f21fb (diff) | |
download | vdr-dffeabbacb5f36d514a8e3702f73e736c71ad099.tar.gz vdr-dffeabbacb5f36d514a8e3702f73e736c71ad099.tar.bz2 |
Fixed PMT handling in case locking the Channels list times out
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 4 | ||||
-rw-r--r-- | pat.c | 8 |
3 files changed, 9 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6b29cd93..c6efd469 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3638,6 +3638,7 @@ Helmut Binder <cco@aon.at> for fixing generating the HashId in cEIT::cEIT() for fixing a bug in handling shared PMTs, where after the first pass not all SIDs of a PMT pid were checked any more + for reporting a problem with PMT handling in case locking the Channels list times out Ulrich Eckhardt <uli@uli-eckhardt.de> for reporting a problem with shutdown after user inactivity in case a plugin is @@ -9536,7 +9536,7 @@ Video Disk Recorder Revision History cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this (thanks to Helmut Binder). -2020-12-09: +2020-12-12: - Fixed multiple recording entries in case a recording is started during the initial reading of the video directory (reported by Claus Muus). @@ -9551,3 +9551,5 @@ Video Disk Recorder Revision History - Added initialization of cDvbFrontend::frontendInfo (thanks to Winfried Köhler). - Fixed a bug in handling shared PMTs, where after the first pass not all SIDs of a PMT pid were checked any more (thanks to Helmut Binder). +- Fixed PMT handling in case locking the Channels list times out (reported by Helmut + Binder). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.c 4.7 2020/12/09 21:42:26 kls Exp $ + * $Id: pat.c 4.8 2020/12/12 10:31:52 kls Exp $ */ #include "pat.h" @@ -392,9 +392,10 @@ bool cPatFilter::PmtVersionChanged(int PmtPid, int Sid, int Version, bool SetNew se->PidEntry()->SetComplete(PmtPidComplete(PmtPid)); } if (se->Version() != Version) { - DBGLOG("PMT %d %2d %5d/%d %2d -> %2d", Transponder(), i, PmtPid, Sid, se->Version(), Version); if (SetNewVersion) se->SetVersion(Version); + else + DBGLOG("PMT %d %2d %5d/%d %2d -> %2d", Transponder(), i, PmtPid, Sid, se->Version(), Version); return true; } break; @@ -473,7 +474,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length SI::PMT pmt(Data, false); if (!pmt.CheckCRCAndParse()) return; - if (!PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), true)) { + if (!PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), false)) { if (activePmt && activePmt->Complete()) SwitchToNextPmtPid(); return; @@ -482,6 +483,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length cChannels *Channels = cChannels::GetChannelsWrite(StateKey, 10); if (!Channels) return; + PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), true); bool ChannelsModified = false; if (activePmt && activePmt->Complete()) SwitchToNextPmtPid(); |