Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce5610bc authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarHans de Goede <hdegoede@redhat.com>
Acked-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent ee362991
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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)