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 generating the HashId in cEIT::cEIT() | ||||||
|  for fixing a bug in handling shared PMTs, where after the first pass not all SIDs of a |  for fixing a bug in handling shared PMTs, where after the first pass not all SIDs of a | ||||||
|  PMT pid were checked any more |  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> | Ulrich Eckhardt <uli@uli-eckhardt.de> | ||||||
|  for reporting a problem with shutdown after user inactivity in case a plugin is |  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 |   cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this | ||||||
|   (thanks to Helmut Binder). |   (thanks to Helmut Binder). | ||||||
|  |  | ||||||
| 2020-12-09: | 2020-12-12: | ||||||
|  |  | ||||||
| - Fixed multiple recording entries in case a recording is started during the initial | - Fixed multiple recording entries in case a recording is started during the initial | ||||||
|   reading of the video directory (reported by Claus Muus). |   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). | - 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 | - 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). |   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 |  * See the main source file 'vdr.c' for copyright information and | ||||||
|  * how to reach the author. |  * 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" | #include "pat.h" | ||||||
| @@ -392,9 +392,10 @@ bool cPatFilter::PmtVersionChanged(int PmtPid, int Sid, int Version, bool SetNew | |||||||
|             se->PidEntry()->SetComplete(PmtPidComplete(PmtPid)); |             se->PidEntry()->SetComplete(PmtPidComplete(PmtPid)); | ||||||
|             } |             } | ||||||
|          if (se->Version() != Version) { |          if (se->Version() != Version) { | ||||||
|             DBGLOG("PMT %d  %2d %5d/%d %2d -> %2d", Transponder(), i, PmtPid, Sid, se->Version(), Version); |  | ||||||
|             if (SetNewVersion) |             if (SetNewVersion) | ||||||
|                se->SetVersion(Version); |                se->SetVersion(Version); | ||||||
|  |             else | ||||||
|  |                DBGLOG("PMT %d  %2d %5d/%d %2d -> %2d", Transponder(), i, PmtPid, Sid, se->Version(), Version); | ||||||
|             return true; |             return true; | ||||||
|             } |             } | ||||||
|          break; |          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); |      SI::PMT pmt(Data, false); | ||||||
|      if (!pmt.CheckCRCAndParse()) |      if (!pmt.CheckCRCAndParse()) | ||||||
|         return; |         return; | ||||||
|      if (!PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), true)) { |      if (!PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), false)) { | ||||||
|         if (activePmt && activePmt->Complete()) |         if (activePmt && activePmt->Complete()) | ||||||
|            SwitchToNextPmtPid(); |            SwitchToNextPmtPid(); | ||||||
|         return; |         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); |      cChannels *Channels = cChannels::GetChannelsWrite(StateKey, 10); | ||||||
|      if (!Channels) |      if (!Channels) | ||||||
|         return; |         return; | ||||||
|  |      PmtVersionChanged(Pid, pmt.getTableIdExtension(), pmt.getVersionNumber(), true); | ||||||
|      bool ChannelsModified = false; |      bool ChannelsModified = false; | ||||||
|      if (activePmt && activePmt->Complete()) |      if (activePmt && activePmt->Complete()) | ||||||
|         SwitchToNextPmtPid(); |         SwitchToNextPmtPid(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user