mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed PMT handling in case locking the Channels list times out
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
							
								
								
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								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-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). | ||||
|   | ||||
							
								
								
									
										8
									
								
								pat.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								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.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(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user