On 10/02/13 15:45, Sakari Ailus wrote:
The current implementation allowed polling for events even if none were
subscribed. This may be troublesome in multi-threaded applications where the
thread handling the subscription is different from the one that handles the
events.

Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
---
  drivers/media/v4l2-core/videobuf2-core.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/drivers/media/v4l2-core/videobuf2-core.c 
b/drivers/media/v4l2-core/videobuf2-core.c
index 79acf5e..c5dc903 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -2011,6 +2011,9 @@ unsigned int vb2_poll(struct vb2_queue *q, struct file 
*file, poll_table *wait)

                if (v4l2_event_pending(fh))
                        res = POLLPRI;
+
+               if (!v4l2_event_has_subscribed(fh))
+                       return POLLERR | POLLPRI;

What should happen if you poll for both POLLPRI and POLLIN and one of the two would normally return POLLERR? Should that error condition be ignored?

I'm not sure, frankly.

Regards,

        Hans

        }

        if (!V4L2_TYPE_IS_OUTPUT(q->type) && !(req_events & (POLLIN | 
POLLRDNORM)))


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to