[libcamera-devel] [PATCH 13/30] cam: camera_session: Access event loop through global instance
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jul 12 17:14:51 CEST 2021
Hi Laurent,
On 07/07/2021 03:19, Laurent Pinchart wrote:
> Don't pass the event loop to the CameraSession constructor, as passing
> this global object explicitly isn't a design that can scale.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Hrm ...
I don't really have much to say, or an alternative so I won't object..
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/cam/camera_session.cpp | 11 ++++++-----
> src/cam/camera_session.h | 6 ++----
> src/cam/main.cpp | 2 +-
> 3 files changed, 9 insertions(+), 10 deletions(-)
>
> diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
> index 439dcdb29ad7..b26c7974056d 100644
> --- a/src/cam/camera_session.cpp
> +++ b/src/cam/camera_session.cpp
> @@ -13,13 +13,14 @@
> #include <libcamera/control_ids.h>
>
> #include "camera_session.h"
> +#include "event_loop.h"
> #include "main.h"
>
> using namespace libcamera;
>
> CameraSession::CameraSession(std::shared_ptr<Camera> camera,
> - CameraConfiguration *config, EventLoop *loop)
> - : camera_(camera), config_(config), writer_(nullptr), last_(0), loop_(loop),
> + CameraConfiguration *config)
> + : camera_(camera), config_(config), writer_(nullptr), last_(0),
> queueCount_(0), captureCount_(0), captureLimit_(0),
> printMetadata_(false)
> {
> @@ -145,7 +146,7 @@ int CameraSession::capture(FrameBufferAllocator *allocator)
> else
> std::cout << "Capture until user interrupts by SIGINT" << std::endl;
>
> - ret = loop_->exec();
> + ret = EventLoop::instance()->exec();
> if (ret)
> std::cout << "Failed to run capture loop" << std::endl;
>
> @@ -175,7 +176,7 @@ void CameraSession::requestComplete(Request *request)
> * Defer processing of the completed request to the event loop, to avoid
> * blocking the camera manager thread.
> */
> - loop_->callLater([=]() { processRequest(request); });
> + EventLoop::instance()->callLater([=]() { processRequest(request); });
> }
>
> void CameraSession::processRequest(Request *request)
> @@ -231,7 +232,7 @@ void CameraSession::processRequest(Request *request)
>
> captureCount_++;
> if (captureLimit_ && captureCount_ >= captureLimit_) {
> - loop_->exit(0);
> + EventLoop::instance()->exit(0);
> return;
> }
>
> diff --git a/src/cam/camera_session.h b/src/cam/camera_session.h
> index ef8a11c3bfb4..270ba3e929e7 100644
> --- a/src/cam/camera_session.h
> +++ b/src/cam/camera_session.h
> @@ -18,17 +18,16 @@
> #include <libcamera/stream.h>
>
> #include "buffer_writer.h"
> -#include "event_loop.h"
> #include "options.h"
>
> class CameraSession
> {
> public:
> CameraSession(std::shared_ptr<libcamera::Camera> camera,
> - libcamera::CameraConfiguration *config,
> - EventLoop *loop);
> + libcamera::CameraConfiguration *config);
>
> int run(const OptionsParser::Options &options);
> +
> private:
> int capture(libcamera::FrameBufferAllocator *allocator);
>
> @@ -43,7 +42,6 @@ private:
> BufferWriter *writer_;
> uint64_t last_;
>
> - EventLoop *loop_;
> unsigned int queueCount_;
> unsigned int captureCount_;
> unsigned int captureLimit_;
> diff --git a/src/cam/main.cpp b/src/cam/main.cpp
> index f71b65a20fe2..90435206d386 100644
> --- a/src/cam/main.cpp
> +++ b/src/cam/main.cpp
> @@ -363,7 +363,7 @@ int CamApp::run()
> }
>
> if (options_.isSet(OptCapture)) {
> - CameraSession session(camera_, config_.get(), &loop_);
> + CameraSession session(camera_, config_.get());
> return session.run(options_);
> }
>
>
More information about the libcamera-devel
mailing list