diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-03-21 19:56:35 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-03-23 16:30:48 +0200 |
commit | 9ab024f7c27d9b6b3ab433502eab02d4a29a3da4 (patch) | |
tree | 09a944b3fe23357b94bb417a9bd0ca6af15e332d /src/libcamera/include | |
parent | e75ef59e028e5b686d686789439ede443c9c4cde (diff) |
libcamera: device_enumerator: Convey device ownership through unique_ptr
Replace usage of shared_ptr with unique_ptr to convey media device
ownership internally in the enumerators when creating the media device.
Once a media device has all its dependencies met, it is converted to a
shared_ptr to keep the external API unchanged.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/libcamera/include')
-rw-r--r-- | src/libcamera/include/device_enumerator.h | 4 | ||||
-rw-r--r-- | src/libcamera/include/device_enumerator_sysfs.h | 2 | ||||
-rw-r--r-- | src/libcamera/include/device_enumerator_udev.h | 8 |
3 files changed, 7 insertions, 7 deletions
diff --git a/src/libcamera/include/device_enumerator.h b/src/libcamera/include/device_enumerator.h index 770f4277..433e357a 100644 --- a/src/libcamera/include/device_enumerator.h +++ b/src/libcamera/include/device_enumerator.h @@ -44,8 +44,8 @@ public: std::shared_ptr<MediaDevice> search(const DeviceMatch &dm); protected: - std::shared_ptr<MediaDevice> createDevice(const std::string &deviceNode); - void addDevice(const std::shared_ptr<MediaDevice> &media); + std::unique_ptr<MediaDevice> createDevice(const std::string &deviceNode); + void addDevice(std::unique_ptr<MediaDevice> &&media); void removeDevice(const std::string &deviceNode); private: diff --git a/src/libcamera/include/device_enumerator_sysfs.h b/src/libcamera/include/device_enumerator_sysfs.h index 9063f6a7..5a5c9b0f 100644 --- a/src/libcamera/include/device_enumerator_sysfs.h +++ b/src/libcamera/include/device_enumerator_sysfs.h @@ -23,7 +23,7 @@ public: int enumerate(); private: - int populateMediaDevice(const std::shared_ptr<MediaDevice> &media); + int populateMediaDevice(MediaDevice *media); std::string lookupDeviceNode(int major, int minor); }; diff --git a/src/libcamera/include/device_enumerator_udev.h b/src/libcamera/include/device_enumerator_udev.h index efaefe5d..fdce4520 100644 --- a/src/libcamera/include/device_enumerator_udev.h +++ b/src/libcamera/include/device_enumerator_udev.h @@ -43,9 +43,9 @@ private: using DependencyMap = std::map<dev_t, std::list<MediaEntity *>>; struct MediaDeviceDeps { - MediaDeviceDeps(const std::shared_ptr<MediaDevice> &media, - const DependencyMap &deps) - : media_(media), deps_(deps) + MediaDeviceDeps(std::unique_ptr<MediaDevice> &&media, + DependencyMap &&deps) + : media_(std::move(media)), deps_(std::move(deps)) { } @@ -54,7 +54,7 @@ private: return media_ == other.media_; } - std::shared_ptr<MediaDevice> media_; + std::unique_ptr<MediaDevice> media_; DependencyMap deps_; }; |