From 9fa7de20368fe2cc517f0c2c43088d051e5f21fb Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Wed, 9 Dec 2020 21:42:26 +0100 Subject: [PATCH] Fixed a bug in handling shared PMTs, where after the first pass not all SIDs of a PMT pid were checked any more --- CONTRIBUTORS | 2 ++ HISTORY | 4 +++- pat.c | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 12746d53..6b29cd93 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3636,6 +3636,8 @@ Helmut Binder cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this for fixing "read incomplete section" errors 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 Ulrich Eckhardt for reporting a problem with shutdown after user inactivity in case a plugin is diff --git a/HISTORY b/HISTORY index 6a5ade48..aa45d400 100644 --- a/HISTORY +++ b/HISTORY @@ -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-05: +2020-12-09: - Fixed multiple recording entries in case a recording is started during the initial reading of the video directory (reported by Claus Muus). @@ -9549,3 +9549,5 @@ Video Disk Recorder Revision History - Fixed "read incomplete section" errors (thanks to Helmut Binder). - Fixed generating the HashId in cEIT::cEIT() (thanks to Helmut Binder). - 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). diff --git a/pat.c b/pat.c index 2f2e286c..eccec25b 100644 --- a/pat.c +++ b/pat.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.c 4.6 2020/06/19 12:19:15 kls Exp $ + * $Id: pat.c 4.7 2020/12/09 21:42:26 kls Exp $ */ #include "pat.h" @@ -389,8 +389,7 @@ bool cPatFilter::PmtVersionChanged(int PmtPid, int Sid, int Version, bool SetNew if (se->Sid() == Sid && se->Pid() == PmtPid) { if (!se->Received()) { se->SetReceived(true); - if (PmtPidComplete(PmtPid)) - se->PidEntry()->SetComplete(true); + se->PidEntry()->SetComplete(PmtPidComplete(PmtPid)); } if (se->Version() != Version) { DBGLOG("PMT %d %2d %5d/%d %2d -> %2d", Transponder(), i, PmtPid, Sid, se->Version(), Version); @@ -411,6 +410,7 @@ void cPatFilter::SwitchToNextPmtPid(void) if (!(activePmt = pmtPidList.Next(activePmt))) activePmt = pmtPidList.First(); PmtPidReset(activePmt->Pid()); + activePmt->SetComplete(false); Add(activePmt->Pid(), SI::TableIdPMT); } }