[libcamera-devel] libcamera: v4l2_device: Construct from MediaEntity*

Message ID 20190204155605.7900-1-jacopo@jmondi.org
State Accepted
Headers show
Series
  • [libcamera-devel] libcamera: v4l2_device: Construct from MediaEntity*
Related show

Commit Message

Jacopo Mondi Feb. 4, 2019, 3:56 p.m. UTC
The V4L2Device constructor wanted a "const MediaEntity &", while
entities are usually retrieved by pointer before being used to construct
a V4L2Device. Change the constructor argument to "MediaEntity *".

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/libcamera/include/v4l2_device.h  | 2 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
 src/libcamera/pipeline/uvcvideo.cpp  | 2 +-
 src/libcamera/v4l2_device.cpp        | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)

--
2.20.1

Comments

Laurent Pinchart Feb. 4, 2019, 6:25 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Mon, Feb 04, 2019 at 04:56:05PM +0100, Jacopo Mondi wrote:
> The V4L2Device constructor wanted a "const MediaEntity &", while
> entities are usually retrieved by pointer before being used to construct
> a V4L2Device. Change the constructor argument to "MediaEntity *".

A non-const pointer hints that the function could keep a reference,
modify the object instance and/or accept a NULL parameter. None of this
is true in this case. Do we really need to pass by pointer ? Shouldn't
it then be at least a const pointer ?

> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  src/libcamera/include/v4l2_device.h  | 2 +-
>  src/libcamera/pipeline/ipu3/ipu3.cpp | 2 +-
>  src/libcamera/pipeline/uvcvideo.cpp  | 2 +-
>  src/libcamera/v4l2_device.cpp        | 4 ++--
>  4 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h
> index 4ff48fb..1067e45 100644
> --- a/src/libcamera/include/v4l2_device.h
> +++ b/src/libcamera/include/v4l2_device.h
> @@ -72,7 +72,7 @@ class V4L2Device
>  {
>  public:
>  	explicit V4L2Device(const std::string &deviceNode);
> -	explicit V4L2Device(const MediaEntity &entity);
> +	explicit V4L2Device(MediaEntity *entity);
>  	V4L2Device(const V4L2Device &) = delete;
>  	~V4L2Device();
> 
> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
> index 7823bbb..fa3c522 100644
> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp
> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
> @@ -182,7 +182,7 @@ V4L2Device *PipelineHandlerIPU3::createVideoDevice(unsigned int id)
>  	if (!cio2)
>  		return nullptr;
> 
> -	V4L2Device *dev = new V4L2Device(*cio2);
> +	V4L2Device *dev = new V4L2Device(cio2);
>  	if (dev->open()) {
>  		delete dev;
>  		return nullptr;
> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
> index 821e4c2..e31816b 100644
> --- a/src/libcamera/pipeline/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo.cpp
> @@ -91,7 +91,7 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
> 
>  	for (MediaEntity *entity : media_->entities()) {
>  		if (entity->flags() & MEDIA_ENT_FL_DEFAULT) {
> -			video_ = new V4L2Device(*entity);
> +			video_ = new V4L2Device(entity);
>  			break;
>  		}
>  	}
> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
> index 4d1f76b..61db7f6 100644
> --- a/src/libcamera/v4l2_device.cpp
> +++ b/src/libcamera/v4l2_device.cpp
> @@ -169,8 +169,8 @@ V4L2Device::V4L2Device(const std::string &deviceNode)
>   *
>   * Construct a V4L2Device from a MediaEntity's device node path.
>   */
> -V4L2Device::V4L2Device(const MediaEntity &entity)
> -	: V4L2Device(entity.deviceNode())
> +V4L2Device::V4L2Device(MediaEntity *entity)
> +	: V4L2Device(entity->deviceNode())
>  {
>  }
>

Patch

diff --git a/src/libcamera/include/v4l2_device.h b/src/libcamera/include/v4l2_device.h
index 4ff48fb..1067e45 100644
--- a/src/libcamera/include/v4l2_device.h
+++ b/src/libcamera/include/v4l2_device.h
@@ -72,7 +72,7 @@  class V4L2Device
 {
 public:
 	explicit V4L2Device(const std::string &deviceNode);
-	explicit V4L2Device(const MediaEntity &entity);
+	explicit V4L2Device(MediaEntity *entity);
 	V4L2Device(const V4L2Device &) = delete;
 	~V4L2Device();

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 7823bbb..fa3c522 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -182,7 +182,7 @@  V4L2Device *PipelineHandlerIPU3::createVideoDevice(unsigned int id)
 	if (!cio2)
 		return nullptr;

-	V4L2Device *dev = new V4L2Device(*cio2);
+	V4L2Device *dev = new V4L2Device(cio2);
 	if (dev->open()) {
 		delete dev;
 		return nullptr;
diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 821e4c2..e31816b 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -91,7 +91,7 @@  bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)

 	for (MediaEntity *entity : media_->entities()) {
 		if (entity->flags() & MEDIA_ENT_FL_DEFAULT) {
-			video_ = new V4L2Device(*entity);
+			video_ = new V4L2Device(entity);
 			break;
 		}
 	}
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index 4d1f76b..61db7f6 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -169,8 +169,8 @@  V4L2Device::V4L2Device(const std::string &deviceNode)
  *
  * Construct a V4L2Device from a MediaEntity's device node path.
  */
-V4L2Device::V4L2Device(const MediaEntity &entity)
-	: V4L2Device(entity.deviceNode())
+V4L2Device::V4L2Device(MediaEntity *entity)
+	: V4L2Device(entity->deviceNode())
 {
 }