summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY2
-rw-r--r--transfer.c4
3 files changed, 6 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index ca19f561..585c4052 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -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
diff --git a/HISTORY b/HISTORY
index d18dd6d1..96b38ab4 100644
--- a/HISTORY
+++ b/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).
diff --git a/transfer.c b/transfer.c
index a7914392..d4ccee20 100644
--- a/transfer.c
+++ b/transfer.c
@@ -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