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:
@@ -72,7 +72,7 @@ public:
|
||||
int start(Camera *camera) override;
|
||||
void stop(Camera *camera) override;
|
||||
|
||||
int queueRequest(Camera *camera, Request *request) override;
|
||||
int queueRequestDevice(Camera *camera, Request *request) override;
|
||||
|
||||
bool match(DeviceEnumerator *enumerator) override;
|
||||
|
||||
@@ -262,7 +262,7 @@ int PipelineHandlerUVC::processControls(UVCCameraData *data, Request *request)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)
|
||||
int PipelineHandlerUVC::queueRequestDevice(Camera *camera, Request *request)
|
||||
{
|
||||
UVCCameraData *data = cameraData(camera);
|
||||
Buffer *buffer = request->findBuffer(&data->stream_);
|
||||
@@ -281,8 +281,6 @@ int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
PipelineHandler::queueRequest(camera, request);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user