[libcamera-devel,16/18] libcamera: Add parent argument to constructors of Object-derived classes

Message ID 20190812124642.24287-17-laurent.pinchart@ideasonboard.com
State Superseded
Headers show
Series
  • Object & Thread enhancements
Related show

Commit Message

Laurent Pinchart Aug. 12, 2019, 12:46 p.m. UTC
Now that the Object class implements parent-child relationships, make it
possible to create EventNotifier and Timer instances with a parent by
adding a parent argument to their constructors.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 include/libcamera/event_notifier.h | 2 +-
 include/libcamera/timer.h          | 2 +-
 src/libcamera/event_notifier.cpp   | 5 +++--
 src/libcamera/timer.cpp            | 5 +++--
 4 files changed, 8 insertions(+), 6 deletions(-)

Comments

Niklas Söderlund Aug. 17, 2019, 3:12 p.m. UTC | #1
Hi Laurent,

Thanks for your work.

On 2019-08-12 15:46:40 +0300, Laurent Pinchart wrote:
> Now that the Object class implements parent-child relationships, make it
> possible to create EventNotifier and Timer instances with a parent by
> adding a parent argument to their constructors.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>

> ---
>  include/libcamera/event_notifier.h | 2 +-
>  include/libcamera/timer.h          | 2 +-
>  src/libcamera/event_notifier.cpp   | 5 +++--
>  src/libcamera/timer.cpp            | 5 +++--
>  4 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/include/libcamera/event_notifier.h b/include/libcamera/event_notifier.h
> index f80945c743dc..a37b02eee4b7 100644
> --- a/include/libcamera/event_notifier.h
> +++ b/include/libcamera/event_notifier.h
> @@ -23,7 +23,7 @@ public:
>  		Exception,
>  	};
>  
> -	EventNotifier(int fd, Type type);
> +	EventNotifier(int fd, Type type, Object *parent = nullptr);
>  	virtual ~EventNotifier();
>  
>  	Type type() const { return type_; }
> diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h
> index 853808e07da8..f47b6a58404f 100644
> --- a/include/libcamera/timer.h
> +++ b/include/libcamera/timer.h
> @@ -19,7 +19,7 @@ class Message;
>  class Timer : public Object
>  {
>  public:
> -	Timer();
> +	Timer(Object *parent = nullptr);
>  	~Timer();
>  
>  	void start(unsigned int msec);
> diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp
> index 96be27601982..687969b0a8d1 100644
> --- a/src/libcamera/event_notifier.cpp
> +++ b/src/libcamera/event_notifier.cpp
> @@ -61,9 +61,10 @@ namespace libcamera {
>   * \brief Construct an event notifier with a file descriptor and event type
>   * \param[in] fd The file descriptor to monitor
>   * \param[in] type The event type to monitor
> + * \param[in] parent The parent Object
>   */
> -EventNotifier::EventNotifier(int fd, Type type)
> -	: fd_(fd), type_(type), enabled_(false)
> +EventNotifier::EventNotifier(int fd, Type type, Object *parent)
> +	: Object(parent), fd_(fd), type_(type), enabled_(false)
>  {
>  	setEnabled(true);
>  }
> diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
> index f45061d4c6f6..c61d77e5128f 100644
> --- a/src/libcamera/timer.cpp
> +++ b/src/libcamera/timer.cpp
> @@ -39,9 +39,10 @@ LOG_DEFINE_CATEGORY(Timer)
>  
>  /**
>   * \brief Construct a timer
> + * \param[in] parent The parent Object
>   */
> -Timer::Timer()
> -	: interval_(0), deadline_(0)
> +Timer::Timer(Object *parent)
> +	: Object(parent), interval_(0), deadline_(0)
>  {
>  }
>  
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel@lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

Patch

diff --git a/include/libcamera/event_notifier.h b/include/libcamera/event_notifier.h
index f80945c743dc..a37b02eee4b7 100644
--- a/include/libcamera/event_notifier.h
+++ b/include/libcamera/event_notifier.h
@@ -23,7 +23,7 @@  public:
 		Exception,
 	};
 
-	EventNotifier(int fd, Type type);
+	EventNotifier(int fd, Type type, Object *parent = nullptr);
 	virtual ~EventNotifier();
 
 	Type type() const { return type_; }
diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h
index 853808e07da8..f47b6a58404f 100644
--- a/include/libcamera/timer.h
+++ b/include/libcamera/timer.h
@@ -19,7 +19,7 @@  class Message;
 class Timer : public Object
 {
 public:
-	Timer();
+	Timer(Object *parent = nullptr);
 	~Timer();
 
 	void start(unsigned int msec);
diff --git a/src/libcamera/event_notifier.cpp b/src/libcamera/event_notifier.cpp
index 96be27601982..687969b0a8d1 100644
--- a/src/libcamera/event_notifier.cpp
+++ b/src/libcamera/event_notifier.cpp
@@ -61,9 +61,10 @@  namespace libcamera {
  * \brief Construct an event notifier with a file descriptor and event type
  * \param[in] fd The file descriptor to monitor
  * \param[in] type The event type to monitor
+ * \param[in] parent The parent Object
  */
-EventNotifier::EventNotifier(int fd, Type type)
-	: fd_(fd), type_(type), enabled_(false)
+EventNotifier::EventNotifier(int fd, Type type, Object *parent)
+	: Object(parent), fd_(fd), type_(type), enabled_(false)
 {
 	setEnabled(true);
 }
diff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp
index f45061d4c6f6..c61d77e5128f 100644
--- a/src/libcamera/timer.cpp
+++ b/src/libcamera/timer.cpp
@@ -39,9 +39,10 @@  LOG_DEFINE_CATEGORY(Timer)
 
 /**
  * \brief Construct a timer
+ * \param[in] parent The parent Object
  */
-Timer::Timer()
-	: interval_(0), deadline_(0)
+Timer::Timer(Object *parent)
+	: Object(parent), interval_(0), deadline_(0)
 {
 }