I've been playing with DMX_SET_BUFFER_SIZE and I've had a problem when I tried to resize the buffer to a smaller size. dvb_dmxdev_set_buffer_size flushes the ringbuffer and then replaces it with a new one. What happens if the current pointer is on a position that would be invalid in the new buffer? An access violation. This because dvb_ringbuffer_flush resets the 2 pointers to the vaule of pwrite (which could be after the end of the new buffer). I think it is safer to reset them to 0. Andrea
diff -r 1886a5ea2f84 linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c --- a/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c Fri Mar 21 08:04:55 2008 -0300 +++ b/linux/drivers/media/dvb/dvb-core/dvb_ringbuffer.c Sat Mar 22 00:07:53 2008 +0000 @@ -86,7 +86,7 @@ ssize_t dvb_ringbuffer_avail(struct dvb_ void dvb_ringbuffer_flush(struct dvb_ringbuffer *rbuf) { - rbuf->pread = rbuf->pwrite; + rbuf->pread = rbuf->pwrite = 0; rbuf->error = 0; }
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb