mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Taking the complete size of available data into account when deciding whether to clear the transfer buffer to avoid overflows
This commit is contained in:
		@@ -873,6 +873,8 @@ Reinhard Nissl <rnissl@gmx.de>
 | 
			
		||||
 for suggesting to make sure the OSD reports oeWrongAlignment errors before any
 | 
			
		||||
 oeAreasOverlap error
 | 
			
		||||
 for reporting a a crash in the time search mechanism
 | 
			
		||||
 for taking the complete size of available data into account when deciding whether
 | 
			
		||||
 to clear the transfer buffer to avoid overflows
 | 
			
		||||
 | 
			
		||||
Richard Robson <richard_robson@beeb.net>
 | 
			
		||||
 for reporting freezing replay if a timer starts while in Transfer Mode from the
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								HISTORY
									
									
									
									
									
								
							@@ -3052,3 +3052,5 @@ Video Disk Recorder Revision History
 | 
			
		||||
- Removed the usleep() call from cDvbPlayer::Action() to make VDR run on NPTL
 | 
			
		||||
  systems (thanks to Alfred Zastrow). The NPTL check at startup has also been
 | 
			
		||||
  removed.
 | 
			
		||||
- Taking the complete size of available data into account when deciding whether
 | 
			
		||||
  to clear the transfer buffer to avoid overflows (thanks to Reinhard Nissl).
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: transfer.c 1.17 2004/10/16 09:22:58 kls Exp $
 | 
			
		||||
 * $Id: transfer.c 1.18 2004/10/23 13:35:08 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "transfer.h"
 | 
			
		||||
@@ -65,7 +65,7 @@ void cTransfer::Action(void)
 | 
			
		||||
        int Count;
 | 
			
		||||
        uchar *b = ringBuffer->Get(Count);
 | 
			
		||||
        if (b) {
 | 
			
		||||
           if (Count > TRANSFERBUFSIZE * 2 / 3) {
 | 
			
		||||
           if (ringBuffer->Available() > TRANSFERBUFSIZE * 9 / 10) {
 | 
			
		||||
              // If the buffer runs full, we have no chance of ever catching up
 | 
			
		||||
              // since the data comes in at the same rate as it goes out (it's "live").
 | 
			
		||||
              // So let's clear the buffer instead of suffering from permanent
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user