[media] pwc: poll(): Check that the device has not beem claimed for streaming already
Some apps which use read() start the streaming through a call to poll(), this means that if another app has already claimed the device for streaming (through for example a s_fmt, or a reqbufs), that the poll should fail instead of getting passed through to vb2_poll. We only check for this when the app is polling for reads, so that ctrl events still work. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
0bf0f713d6
commit
296da3cd14
@ -625,10 +625,19 @@ static ssize_t pwc_video_read(struct file *file, char __user *buf,
|
||||
static unsigned int pwc_video_poll(struct file *file, poll_table *wait)
|
||||
{
|
||||
struct pwc_device *pdev = video_drvdata(file);
|
||||
unsigned long req_events = poll_requested_events(wait);
|
||||
|
||||
if (!pdev->udev)
|
||||
return POLL_ERR;
|
||||
|
||||
if ((req_events & (POLLIN | POLLRDNORM)) &&
|
||||
pdev->vb_queue.num_buffers == 0 &&
|
||||
!pdev->iso_init) {
|
||||
/* This poll will start a read stream, check capt_file */
|
||||
if (pwc_test_n_set_capt_file(pdev, file))
|
||||
return POLL_ERR;
|
||||
}
|
||||
|
||||
return vb2_poll(&pdev->vb_queue, file, wait);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user