The new Thread class wraps std::thread in order to integrate it with the Object, Signal and EventDispatcher classes. By default new threads run an internal event loop, and their run() method can be overloaded to provide a custom thread loop. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2018, Google Inc.
|
|
*
|
|
* camera_manager.h - Camera management
|
|
*/
|
|
#ifndef __LIBCAMERA_CAMERA_MANAGER_H__
|
|
#define __LIBCAMERA_CAMERA_MANAGER_H__
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace libcamera {
|
|
|
|
class Camera;
|
|
class DeviceEnumerator;
|
|
class EventDispatcher;
|
|
class PipelineHandler;
|
|
|
|
class CameraManager
|
|
{
|
|
public:
|
|
int start();
|
|
void stop();
|
|
|
|
const std::vector<std::shared_ptr<Camera>> &cameras() const { return cameras_; }
|
|
std::shared_ptr<Camera> get(const std::string &name);
|
|
|
|
void addCamera(std::shared_ptr<Camera> camera);
|
|
void removeCamera(Camera *camera);
|
|
|
|
static CameraManager *instance();
|
|
static const std::string &version() { return version_; }
|
|
|
|
void setEventDispatcher(std::unique_ptr<EventDispatcher> dispatcher);
|
|
EventDispatcher *eventDispatcher();
|
|
|
|
private:
|
|
CameraManager();
|
|
CameraManager(const CameraManager &) = delete;
|
|
CameraManager &operator=(const CameraManager &) = delete;
|
|
~CameraManager();
|
|
|
|
std::unique_ptr<DeviceEnumerator> enumerator_;
|
|
std::vector<std::shared_ptr<PipelineHandler>> pipes_;
|
|
std::vector<std::shared_ptr<Camera>> cameras_;
|
|
|
|
static const std::string version_;
|
|
};
|
|
|
|
} /* namespace libcamera */
|
|
|
|
#endif /* __LIBCAMERA_CAMERA_MANAGER_H__ */
|