libcamera: v4l2_device: List controls when setting file descriptor

The base V4L2Device class is bound to a video device node by either
open(), which opens the device node and creates a new file descriptor,
or setFd(), which takes an already open file descriptor. The former
populates the V4L2Device instance controls, while the latter doesn't.
This prevents using controls on V4L2 M2M devices. Fix it by populating
controls in setFd(), which is called by open().

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Xavier Roumegue <xavier.roumegue@oss.nxp.com>
This commit is contained in:
Laurent Pinchart 2022-10-03 19:40:26 +03:00
parent 2cc5654633
commit ca33225ceb

View file

@ -97,8 +97,6 @@ int V4L2Device::open(unsigned int flags)
setFd(std::move(fd));
listControls();
return 0;
}
@ -129,6 +127,8 @@ int V4L2Device::setFd(UniqueFD fd)
fdEventNotifier_->activated.connect(this, &V4L2Device::eventAvailable);
fdEventNotifier_->setEnabled(false);
listControls();
return 0;
}