[PATCH] qcap: fix recent regression that limited Wine's v4l2 support to devices that read()

Zebediah Figura z.figura12 at gmail.com
Sat Apr 20 10:43:35 CDT 2019


On 4/20/19 10:31 AM, Damjan Jovanovic wrote:
> 
> 
> On Sat, Apr 20, 2019 at 4:52 PM Zebediah Figura <z.figura12 at gmail.com 
> <mailto:z.figura12 at gmail.com>> wrote:
> 
>     On 4/20/19 8:15 AM, Damjan Jovanovic wrote:
>      > Recent changes to qcap/v4l.c resulted in the removal of mmap()
>      > for v4l2 devices, but read() is optional for device drivers and
>      > some don't support it. This isn't a major problem with the
>      > presense of libv4l2 though, as it can emulate read() on top of
>      > mmap(). However the code checks whether the device can read(),
>      > and if not, doesn't even try to use it, even though it can.
>      >
>      > Fix this by only warning that read() is being emulated, and
>      > continuing with libv4l2 if available.
>      >
>      > Also clarifies the logging.
>      >
>      > Signed-off-by: Damjan Jovanovic <damjan.jov at gmail.com
>     <mailto:damjan.jov at gmail.com>>
>      > ---
>      >   dlls/qcap/v4l.c | 13 ++++++++-----
>      >   1 file changed, 8 insertions(+), 5 deletions(-)
>      >
>      >
>      >
> 
>     This doesn't seem right; libv4l2 should massage the result of
>     VIDIOC_QUERYCAP to include V4L2_CAP_READWRITE. See
>     <https://git.linuxtv.org/v4l-utils.git/tree/lib/libv4l2/libv4l2.c#n1210>.
> 
> 
> On FreeBSD 11.2 with libv4l-1.6.3_4, that is certainly NOT the case. It 
> could be a newer or not yet released feature.
> 
> 
> 

It's been the case since libv4l2 0.5: 
<https://git.linuxtv.org/v4l-utils.git/commit/lib/libv4l2/libv4l2.c?id=0215f2ac08c3ad0dc66ad8036f4e186a5e8f56d6>

If FreeBSD is using 1.6.3, then I think something else is wrong. Are you 
sure that libv4l2 is actually being loaded?



More information about the wine-devel mailing list