summaryrefslogtreecommitdiff
path: root/src/libcamera/device_enumerator_udev.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-21 19:56:35 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-23 16:30:48 +0200
commit9ab024f7c27d9b6b3ab433502eab02d4a29a3da4 (patch)
tree09a944b3fe23357b94bb417a9bd0ca6af15e332d /src/libcamera/device_enumerator_udev.cpp
parente75ef59e028e5b686d686789439ede443c9c4cde (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_udev.cpp')
-rw-r--r--src/libcamera/device_enumerator_udev.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
index ea3f6b7c..9cbc7e47 100644
--- a/src/libcamera/device_enumerator_udev.cpp
+++ b/src/libcamera/device_enumerator_udev.cpp
@@ -76,7 +76,7 @@ int DeviceEnumeratorUdev::addUdevDevice(struct udev_device *dev)
return -ENODEV;
if (!strcmp(subsystem, "media")) {
- std::shared_ptr<MediaDevice> media =
+ std::unique_ptr<MediaDevice> media =
createDevice(udev_device_get_devnode(dev));
if (!media)
return -ENODEV;
@@ -96,7 +96,7 @@ int DeviceEnumeratorUdev::addUdevDevice(struct udev_device *dev)
<< "Defer media device " << media->deviceNode()
<< " due to " << ret << " missing dependencies";
- pending_.emplace_back(media, deps);
+ pending_.emplace_back(std::move(media), std::move(deps));
MediaDeviceDeps *mediaDeps = &pending_.back();
for (const auto &dep : mediaDeps->deps_)
devMap_[dep.first] = mediaDeps;
@@ -104,7 +104,7 @@ int DeviceEnumeratorUdev::addUdevDevice(struct udev_device *dev)
return 0;
}
- addDevice(media);
+ addDevice(std::move(media));
return 0;
}
@@ -319,7 +319,7 @@ int DeviceEnumeratorUdev::addV4L2Device(dev_t devnum)
LOG(DeviceEnumerator, Debug)
<< "All dependencies for media device "
<< deps->media_->deviceNode() << " found";
- addDevice(deps->media_);
+ addDevice(std::move(deps->media_));
pending_.remove(*deps);
}