diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2021-10-26 15:10:43 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2021-12-11 17:53:40 +0100 |
commit | 6cd5c958b738dd7b06605adff915093f9fe0d513 (patch) | |
tree | fae2e6e6c6257eda52a77e9ea69e6f2fcbcc83e7 /include | |
parent | a645898af50396a4ae1b32e418c21011c8b3f99d (diff) |
libcamera: pipeline_handler: Split request queueing
In order to prepare to handle synchronization fences at Request
queueing time, split the PipelineHandler::queueRequest() function in
two, by creating a list of waiting requests and introducing the
doQueueRequest() function that queues requests to the device in the
order the pipeline has received them.
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/internal/pipeline_handler.h | 6 | ||||
-rw-r--r-- | include/libcamera/internal/tracepoints/request.tp | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index 3de27ae9..6aa33785 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -8,6 +8,7 @@ #pragma once #include <memory> +#include <queue> #include <set> #include <string> #include <sys/types.h> @@ -76,9 +77,14 @@ private: void mediaDeviceDisconnected(MediaDevice *media); virtual void disconnect(); + void doQueueRequest(Request *request); + void doQueueRequests(); + std::vector<std::shared_ptr<MediaDevice>> mediaDevices_; std::vector<std::weak_ptr<Camera>> cameras_; + std::queue<Request *> waitingRequests_; + const char *name_; friend class PipelineHandlerFactory; diff --git a/include/libcamera/internal/tracepoints/request.tp b/include/libcamera/internal/tracepoints/request.tp index f039ffd4..f1e54497 100644 --- a/include/libcamera/internal/tracepoints/request.tp +++ b/include/libcamera/internal/tracepoints/request.tp @@ -61,6 +61,15 @@ TRACEPOINT_EVENT_INSTANCE( TRACEPOINT_EVENT_INSTANCE( libcamera, request, + request_device_queue, + TP_ARGS( + libcamera::Request *, req + ) +) + +TRACEPOINT_EVENT_INSTANCE( + libcamera, + request, request_complete, TP_ARGS( libcamera::Request::Private *, req |