summaryrefslogtreecommitdiff
path: root/src/libcamera/pipeline_handler.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-10-18 14:54:31 +0300
committerJacopo Mondi <jacopo@jmondi.org>2021-12-11 17:53:40 +0100
commitdb37335ee0ee78f7e5562a9617c1b4f17451fc3a (patch)
treee604b451f9a060b6b73b1efee2965b0527e2b9b2 /src/libcamera/pipeline_handler.cpp
parent6705596e29ef3b8d990ff5b851bf3338118198e6 (diff)
libcamera: request: Make Request class Extensible
Implement the D-Pointer design pattern in the Request class to allow changing internal data without affecting the public ABI. Move the internal fields that are not needed to implement the public API to the Request::Private class already. This allows to remove the friend class declaration for the PipelineHandler class, which can now use the Request::Private API. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> [Move all internal fields to Request::Private and remove friend declaration] Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline_handler.cpp')
-rw-r--r--src/libcamera/pipeline_handler.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index f69c4f03..67fdf1d8 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -19,6 +19,7 @@
#include "libcamera/internal/camera.h"
#include "libcamera/internal/device_enumerator.h"
#include "libcamera/internal/media_device.h"
+#include "libcamera/internal/request.h"
#include "libcamera/internal/tracepoints.h"
/**
@@ -311,15 +312,15 @@ void PipelineHandler::queueRequest(Request *request)
{
LIBCAMERA_TRACEPOINT(request_queue, request);
- Camera *camera = request->camera_;
+ Camera *camera = request->_d()->camera();
Camera::Private *data = camera->_d();
data->queuedRequests_.push_back(request);
- request->sequence_ = data->requestSequence_++;
+ request->_d()->sequence_ = data->requestSequence_++;
int ret = queueRequestDevice(camera, request);
if (ret) {
- request->cancel();
+ request->_d()->cancel();
completeRequest(request);
}
}
@@ -360,9 +361,9 @@ void PipelineHandler::queueRequest(Request *request)
*/
bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer)
{
- Camera *camera = request->camera_;
+ Camera *camera = request->_d()->camera();
camera->bufferCompleted.emit(request, buffer);
- return request->completeBuffer(buffer);
+ return request->_d()->completeBuffer(buffer);
}
/**
@@ -381,9 +382,9 @@ bool PipelineHandler::completeBuffer(Request *request, FrameBuffer *buffer)
*/
void PipelineHandler::completeRequest(Request *request)
{
- Camera *camera = request->camera_;
+ Camera *camera = request->_d()->camera();
- request->complete();
+ request->_d()->complete();
Camera::Private *data = camera->_d();