e9hack wrote: > Oliver Endriss wrote: > > e9hack wrote: > >> Hi, > >> > >> if the video-device (saa7146 on a FF card) was open for capturing, > >> the close call doesn't release the capture buffers. > >> The attached patch may fix this problem. Possible there is more > >> cleanup necessary. > > > >> diff -r 1109998234b4 linux/drivers/media/common/saa7146_video.c > >> --- a/linux/drivers/media/common/saa7146_video.c Fri Mar 30 10:58:01 2007 -0300 > >> +++ b/linux/drivers/media/common/saa7146_video.c Sat Mar 31 19:50:55 2007 +0200 > >> @@ -1429,6 +1429,7 @@ static void video_close(struct saa7146_d > >> { > >> struct saa7146_fh *fh = (struct saa7146_fh *)file->private_data; > >> struct saa7146_vv *vv = dev->vv_data; > >> + struct videobuf_queue *q = &fh->video_q; > >> int err; > >> > >> if (IS_CAPTURE_ACTIVE(fh) != 0) { > >> @@ -1436,6 +1437,11 @@ static void video_close(struct saa7146_d > >> } else if (IS_OVERLAY_ACTIVE(fh) != 0) { > >> err = saa7146_stop_preview(fh); > >> } > >> + > >> + // release all capture buffers > >> + mutex_lock(&q->lock); > >> + videobuf_read_stop(q); > >> + mutex_unlock(&q->lock); > > > > Hm, I'm not sure: Is it safe to call videobuf_read_stop() > > if capturing was never active? > > I think it's safe. videobuf_read_stop() calls videobuf_queue_cancel() and frees all buffers. If capturing was never > active, videobuf_queue_cancel() walks through an empty queue and does nothing. But the buffers must be freed. Applied, thanks. Oliver -- -------------------------------------------------------- VDR Remote Plugin 0.3.9 available at http://www.escape-edv.de/endriss/vdr/ -------------------------------------------------------- _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb