diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2021-01-26 18:17:06 +0100 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2021-02-05 11:10:29 +0100 |
commit | a3c75bba84bac0a4f8a4c815cc7dcd9a72116c59 (patch) | |
tree | f5fa09e45940991a617a443cf610c8fc1cb12dd8 /src/cam/capture.h | |
parent | 5b60b689c14bcb84ee034bdf400a75c0b63ef999 (diff) |
cam: Only queue the exact number of requests asked for
The cam option --capture=N is suppose to only capture N requests. But if
the processing done for each request is large (such as writing it to a
slow disk) the current implementation could queue more than N requests
before the exit condition is detected and capturing stopped.
Solve this by only queueing N requests while still waiting for N
requests to complete before exiting.
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>
Diffstat (limited to 'src/cam/capture.h')
-rw-r--r-- | src/cam/capture.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cam/capture.h b/src/cam/capture.h index d21c95a2..c7c9dc00 100644 --- a/src/cam/capture.h +++ b/src/cam/capture.h @@ -32,6 +32,7 @@ public: private: int capture(libcamera::FrameBufferAllocator *allocator); + int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processRequest(libcamera::Request *request); @@ -43,6 +44,7 @@ private: uint64_t last_; EventLoop *loop_; + unsigned int queueCount_; unsigned int captureCount_; unsigned int captureLimit_; |