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