summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-18 02:10:18 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-01-23 22:36:08 +0200
commitb6467bd9c67f69fe5023cb524391b8f1fc5c44c4 (patch)
treeff98ca8d0e925a34c8f360b78c23308e4167fc97 /include
parentce2ea24fb46f924bda14721c7cee0d2e4ea0d74f (diff)
libcamera: camera_manager: Move private data members to private implementation
Use the d-pointer idiom ([1], [2]) to hide the private data members from the CameraManager class interface. This will ease maintaining ABI compatibility, and prepares for the implementation of the CameraManager class threading model. [1] https://wiki.qt.io/D-Pointer [2] https://en.cppreference.com/w/cpp/language/pimpl Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'include')
-rw-r--r--include/libcamera/camera_manager.h13
1 files changed, 4 insertions, 9 deletions
diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h
index 09419766..068afd58 100644
--- a/include/libcamera/camera_manager.h
+++ b/include/libcamera/camera_manager.h
@@ -7,7 +7,6 @@
#ifndef __LIBCAMERA_CAMERA_MANAGER_H__
#define __LIBCAMERA_CAMERA_MANAGER_H__
-#include <map>
#include <memory>
#include <string>
#include <sys/types.h>
@@ -18,9 +17,7 @@
namespace libcamera {
class Camera;
-class DeviceEnumerator;
class EventDispatcher;
-class PipelineHandler;
class CameraManager : public Object
{
@@ -33,7 +30,7 @@ public:
int start();
void stop();
- const std::vector<std::shared_ptr<Camera>> &cameras() const { return cameras_; }
+ const std::vector<std::shared_ptr<Camera>> &cameras() const;
std::shared_ptr<Camera> get(const std::string &name);
std::shared_ptr<Camera> get(dev_t devnum);
@@ -46,13 +43,11 @@ public:
EventDispatcher *eventDispatcher();
private:
- std::unique_ptr<DeviceEnumerator> enumerator_;
- std::vector<std::shared_ptr<PipelineHandler>> pipes_;
- std::vector<std::shared_ptr<Camera>> cameras_;
- std::map<dev_t, std::weak_ptr<Camera>> camerasByDevnum_;
-
static const std::string version_;
static CameraManager *self_;
+
+ class Private;
+ std::unique_ptr<Private> p_;
};
} /* namespace libcamera */