[media] gspca_main: Allow switching from read to mmap / userptr mode

Some applications (xawtv, qv4l2) mix read and mmap calls. Allow switching
from read mode back to mmap mode (by doing a reqbufs).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Hans de Goede 2010-12-31 07:41:54 -03:00 committed by Mauro Carvalho Chehab
parent ee3629914b
commit ce5610bca7

View File

@ -1497,6 +1497,7 @@ static int vidioc_reqbufs(struct file *file, void *priv,
return -ERESTARTSYS;
if (gspca_dev->memory != GSPCA_MEMORY_NO
&& gspca_dev->memory != GSPCA_MEMORY_READ
&& gspca_dev->memory != rb->memory) {
ret = -EBUSY;
goto out;
@ -1525,6 +1526,9 @@ static int vidioc_reqbufs(struct file *file, void *priv,
gspca_stream_off(gspca_dev);
mutex_unlock(&gspca_dev->usb_lock);
}
/* Don't restart the stream when switching from read to mmap mode */
if (gspca_dev->memory == GSPCA_MEMORY_READ)
streaming = 0;
/* free the previous allocated buffers, if any */
if (gspca_dev->nframes != 0)