[libcamera-devel,v7,9/9] libcamera: camera_manager: Enforce unique camera IDs

Message ID 20200804161358.1628962-10-niklas.soderlund@ragnatech.se
State Superseded
Headers show
Series
  • libcamera: Generate unique and stable camera IDs
Related show

Commit Message

Niklas Söderlund Aug. 4, 2020, 4:13 p.m. UTC
The camera ID is documented that it should be unique but it's not
enforced. Change this by refusing to add cameras to the CameraManager
that would create two cameras with the exact same ID.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
* Changes since v5
- Rename 'name' to 'id'.
- Make error Fatal.

* Changes since v4
- Update string in error message.

* Changes since v3
- Update commit message.
---
 src/libcamera/camera_manager.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Laurent Pinchart Aug. 4, 2020, 6:56 p.m. UTC | #1
Hi Niklas,

Thank you for the patch.

On Tue, Aug 04, 2020 at 06:13:58PM +0200, Niklas Söderlund wrote:
> The camera ID is documented that it should be unique but it's not
> enforced. Change this by refusing to add cameras to the CameraManager
> that would create two cameras with the exact same ID.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
> * Changes since v5
> - Rename 'name' to 'id'.
> - Make error Fatal.
> 
> * Changes since v4
> - Update string in error message.
> 
> * Changes since v3
> - Update commit message.
> ---
>  src/libcamera/camera_manager.cpp | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
> index 76543b6aac8df9c4..47d56256abd6d490 100644
> --- a/src/libcamera/camera_manager.cpp
> +++ b/src/libcamera/camera_manager.cpp
> @@ -182,10 +182,10 @@ void CameraManager::Private::addCamera(std::shared_ptr<Camera> camera,
>  
>  	for (std::shared_ptr<Camera> c : cameras_) {
>  		if (c->id() == camera->id()) {
> -			LOG(Camera, Warning)
> -				<< "Registering camera with duplicate ID '"
> +			LOG(Camera, Fatal)
> +				<< "Trying to register a camera with a duplicated ID '"
>  				<< camera->id() << "'";
> -			break;
> +			return;
>  		}
>  	}
>

Patch

diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index 76543b6aac8df9c4..47d56256abd6d490 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -182,10 +182,10 @@  void CameraManager::Private::addCamera(std::shared_ptr<Camera> camera,
 
 	for (std::shared_ptr<Camera> c : cameras_) {
 		if (c->id() == camera->id()) {
-			LOG(Camera, Warning)
-				<< "Registering camera with duplicate ID '"
+			LOG(Camera, Fatal)
+				<< "Trying to register a camera with a duplicated ID '"
 				<< camera->id() << "'";
-			break;
+			return;
 		}
 	}