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/device_enumerator_sysfs.cpp | |
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/device_enumerator_sysfs.cpp')
-rw-r--r-- | src/libcamera/device_enumerator_sysfs.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp index 197ca235..3446db59 100644 --- a/src/libcamera/device_enumerator_sysfs.cpp +++ b/src/libcamera/device_enumerator_sysfs.cpp @@ -72,11 +72,11 @@ int DeviceEnumeratorSysfs::enumerate() continue; } - std::shared_ptr<MediaDevice> media = createDevice(devnode); + std::unique_ptr<MediaDevice> media = createDevice(devnode); if (!media) continue; - if (populateMediaDevice(media) < 0) { + if (populateMediaDevice(media.get()) < 0) { LOG(DeviceEnumerator, Warning) << "Failed to populate media device " << media->deviceNode() @@ -84,7 +84,7 @@ int DeviceEnumeratorSysfs::enumerate() continue; } - addDevice(media); + addDevice(std::move(media)); } closedir(dir); @@ -92,7 +92,7 @@ int DeviceEnumeratorSysfs::enumerate() return 0; } -int DeviceEnumeratorSysfs::populateMediaDevice(const std::shared_ptr<MediaDevice> &media) +int DeviceEnumeratorSysfs::populateMediaDevice(MediaDevice *media) { /* Associate entities to device node paths. */ for (MediaEntity *entity : media->entities()) { |