mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-19 10:25:05 +03:00
cam: Move event loop exit from CameraSession to CamApp
Make exiting the event loop the responsibility of the application, not the camera session, to prepare for support of multiple camera sessions. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
453583e189
commit
011b3ff288
3 changed files with 12 additions and 1 deletions
|
@ -232,7 +232,7 @@ void CameraSession::processRequest(Request *request)
|
|||
|
||||
captureCount_++;
|
||||
if (captureLimit_ && captureCount_ >= captureLimit_) {
|
||||
EventLoop::instance()->exit(0);
|
||||
captureDone.emit();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#include <stdint.h>
|
||||
#include <vector>
|
||||
|
||||
#include <libcamera/base/signal.h>
|
||||
|
||||
#include <libcamera/camera.h>
|
||||
#include <libcamera/framebuffer.h>
|
||||
#include <libcamera/framebuffer_allocator.h>
|
||||
|
@ -28,6 +30,8 @@ public:
|
|||
|
||||
int run(const OptionsParser::Options &options);
|
||||
|
||||
libcamera::Signal<> captureDone;
|
||||
|
||||
private:
|
||||
int capture(libcamera::FrameBufferAllocator *allocator);
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ public:
|
|||
private:
|
||||
void cameraAdded(std::shared_ptr<Camera> cam);
|
||||
void cameraRemoved(std::shared_ptr<Camera> cam);
|
||||
void captureDone();
|
||||
int parseOptions(int argc, char *argv[]);
|
||||
int prepareConfig();
|
||||
int listControls();
|
||||
|
@ -330,6 +331,11 @@ void CamApp::cameraRemoved(std::shared_ptr<Camera> cam)
|
|||
std::cout << "Camera Removed: " << cam->id() << std::endl;
|
||||
}
|
||||
|
||||
void CamApp::captureDone()
|
||||
{
|
||||
EventLoop::instance()->exit(0);
|
||||
}
|
||||
|
||||
int CamApp::run()
|
||||
{
|
||||
int ret;
|
||||
|
@ -364,6 +370,7 @@ int CamApp::run()
|
|||
|
||||
if (options_.isSet(OptCapture)) {
|
||||
CameraSession session(camera_, config_.get());
|
||||
session.captureDone.connect(this, &CamApp::captureDone);
|
||||
return session.run(options_);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue