Attached is a patch to have cx18_v4l2_enc_poll() to return that data is
available for reading when q_io has data.  The case could occur that
q_full was empty, but q_io had data waiting to be read, in which case
cx18_v4l2_enc_poll() probably should have returned data is ready for
reading.

-Andy

This a log demonstrating the situation that can occur without this
change:

Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: open_id: 32  stream type 
= 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream s_flags = 0x118
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream buffers 64 
buf_size 32768 buffers_stolen 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_free  next 
0x295d0fc0 prev 295d0340 buffers 63 length 2064384 bytesused 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_full  next 
0x3b0a0208 prev 3b0a0208 buffers 0 length 0 bytesused 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_io  next 
0x295d0cc0 prev 295d0cc0 buffers 1 length 32768 bytesused 28672
Mar  5 22:45:10 palomino kernel: cx180 file: Encoder poll
Mar  5 22:45:10 palomino kernel: cx180 file: Post poll_wait
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream s_flags = 0x118
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream buffers 64 
buf_size 32768 buffers_stolen 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_free  next 
0x295d0fc0 prev 295d0340 buffers 63 length 2064384 bytesused 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_full  next 
0x3b0a0208 prev 3b0a0208 buffers 0 length 0 bytesused 0
Mar  5 22:45:10 palomino kernel: cx180 file: enc_poll: stream q_io  next 
0x295d0cc0 prev 295d0cc0 buffers 1 length 32768 bytesused 28672
... MythTV gives up here and closes and reopens the device node,
    but data could have been read if select() had properly notified MythTV.
Mar  5 22:45:10 palomino kernel: cx18-0 info: close stopping capture
Mar  5 22:45:10 palomino kernel: cx18-0 info: close stopping embedded VBI 
capture
Mar  5 22:45:10 palomino kernel: cx18-0 info: Stop Capture
Mar  5 22:45:11 palomino kernel: cx18-0 info: Stop Capture
Mar  5 22:45:11 palomino kernel: cx18-0 file: open encoder MPEG
Mar  5 22:45:11 palomino kernel: cx180 file: enc_poll: open_id: 33  stream type 
= 0

--- cx18-03d4d8d84c4f/linux/drivers/media/video/cx18/cx18-fileops.c.orig	2008-02-26 22:52:35.000000000 -0500
+++ cx18-03d4d8d84c4f/linux/drivers/media/video/cx18/cx18-fileops.c	2008-03-05 23:22:51.000000000 -0500
@@ -523,7 +523,7 @@ unsigned int cx18_v4l2_enc_poll(struct f
 	CX18_DEBUG_HI_FILE("Encoder poll\n");
 	poll_wait(filp, &s->waitq, wait);
 
-	if (eof || s->q_full.length)
+	if (eof || s->q_full.length || s->q_io.length)
 		return POLLIN | POLLRDNORM;
 	return 0;
 }
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to