From 79ceaf974e118af2de53c32ab64486df6b603c79 Mon Sep 17 00:00:00 2001 From: Andrew de Quincy Date: Wed, 14 Apr 2004 10:31:21 +0000 Subject: Fixed dvb_ringbuffer_pkt_next not advancing to next packet --- linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'linux/drivers/media/dvb/dvb-core') diff --git a/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c b/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c index 1ab5166fc..d761c3fe3 100644 --- a/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c +++ b/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c @@ -236,7 +236,14 @@ ssize_t dvb_ringbuffer_pkt_next(struct dvb_ringbuffer *rbuf, size_t idx, size_t* int curpktlen; int curpktstatus; - if (idx == -1) idx = rbuf->pread; + if (idx == -1) { + idx = rbuf->pread; + } else { + curpktlen = rbuf->data[idx] << 8; + curpktlen |= rbuf->data[(idx + 1) % rbuf->size]; + idx = (idx + curpktlen + DVB_RINGBUFFER_PKTHDRSIZE) % rbuf->size; + } + consumed = (idx - rbuf->pread) % rbuf->size; while((dvb_ringbuffer_avail(rbuf) - consumed) > DVB_RINGBUFFER_PKTHDRSIZE) { -- cgit v1.2.3