libcamera: pipelines: Align bookkeeping in queueRequest()
Expecting pipeline handler implementations of queueRequest() to call the base class queueRequest() at the correct point have led to different behaviors between the pipelines. Fix this by splitting queueRequest() into a base class implementation which handles the bookkeeping and a new queueRequestDevice() that is to be implemented by pipeline handlers and only deals with committing the request to the device. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
@@ -77,7 +77,7 @@ public:
|
||||
virtual int start(Camera *camera) = 0;
|
||||
virtual void stop(Camera *camera) = 0;
|
||||
|
||||
virtual int queueRequest(Camera *camera, Request *request);
|
||||
int queueRequest(Camera *camera, Request *request);
|
||||
|
||||
bool completeBuffer(Camera *camera, Request *request, Buffer *buffer);
|
||||
void completeRequest(Camera *camera, Request *request);
|
||||
@@ -89,6 +89,8 @@ protected:
|
||||
std::unique_ptr<CameraData> data);
|
||||
void hotplugMediaDevice(MediaDevice *media);
|
||||
|
||||
virtual int queueRequestDevice(Camera *camera, Request *request) = 0;
|
||||
|
||||
CameraData *cameraData(const Camera *camera);
|
||||
|
||||
CameraManager *manager_;
|
||||
|
||||
Reference in New Issue
Block a user