lkml.org 
[lkml]   [2011]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFCv4 PATCH 3/6] videobuf2: only start streaming in poll() if so requested by the poll mask.
    Date
    From: Hans Verkuil <hans.verkuil@cisco.com>

    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    ---
    drivers/media/video/videobuf2-core.c | 7 +++++--
    1 files changed, 5 insertions(+), 2 deletions(-)

    diff --git a/drivers/media/video/videobuf2-core.c b/drivers/media/video/videobuf2-core.c
    index 6687ac3..a921638 100644
    --- a/drivers/media/video/videobuf2-core.c
    +++ b/drivers/media/video/videobuf2-core.c
    @@ -1368,6 +1368,7 @@ static int __vb2_cleanup_fileio(struct vb2_queue *q);
    */
    unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait)
    {
    + unsigned long req_events = poll_requested_events(wait);
    unsigned long flags;
    unsigned int ret;
    struct vb2_buffer *vb = NULL;
    @@ -1376,12 +1377,14 @@ unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait)
    * Start file I/O emulator only if streaming API has not been used yet.
    */
    if (q->num_buffers == 0 && q->fileio == NULL) {
    - if (!V4L2_TYPE_IS_OUTPUT(q->type) && (q->io_modes & VB2_READ)) {
    + if (!V4L2_TYPE_IS_OUTPUT(q->type) && (q->io_modes & VB2_READ) &&
    + (req_events & (POLLIN | POLLRDNORM))) {
    ret = __vb2_init_fileio(q, 1);
    if (ret)
    return POLLERR;
    }
    - if (V4L2_TYPE_IS_OUTPUT(q->type) && (q->io_modes & VB2_WRITE)) {
    + if (V4L2_TYPE_IS_OUTPUT(q->type) && (q->io_modes & VB2_WRITE) &&
    + (req_events & (POLLOUT | POLLWRNORM))) {
    ret = __vb2_init_fileio(q, 0);
    if (ret)
    return POLLERR;
    --
    1.7.5.4


    \
     
     \ /
      Last update: 2011-09-29 09:47    [W:0.020 / U:0.828 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site