--- zbar-0.10_/zbar/video/v4l2.c 2009-10-23 21:16:44.000000000 +0300 +++ zbar-0.10_/zbar/video/v4l2.c 2014-10-13 01:47:35.714155712 +0300 @@ -308,6 +308,16 @@ static int v4l2_init (zbar_video_t *vdo, return(-1); if(vdo->iomode == VIDEO_MMAP) return(v4l2_mmap_buffers(vdo)); + + struct v4l2_requestbuffers rb; + memset(&rb, 0, sizeof(rb)); + rb.count = vdo->num_images; + rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + rb.memory = V4L2_MEMORY_USERPTR; + if(ioctl(vdo->fd, VIDIOC_REQBUFS, &rb) < 0) + return(err_capture(vdo, SEV_ERROR, ZBAR_ERR_SYSTEM, __func__, + "VIDIOC_REQBUFS")); + return(0); } @@ -315,7 +325,7 @@ static int v4l2_probe_iomode (zbar_video { struct v4l2_requestbuffers rb; memset(&rb, 0, sizeof(rb)); - rb.count = vdo->num_images; /* FIXME workaround broken drivers */ + rb.count = 0; //vdo->num_images; /* FIXME workaround broken drivers */ rb.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; if(vdo->iomode == VIDEO_MMAP) rb.memory = V4L2_MEMORY_MMAP;