[libcamera-devel,2/4] libcamera: thread: Enforce dispatchMessages() call context with assert
diff mbox series

Message ID 20210523023155.20268-3-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: thread: Documentation fixes and enhancements
Related show

Commit Message

Laurent Pinchart May 23, 2021, 2:31 a.m. UTC
The Thread::dispatchMessages() function is meant to be called from
within the thread only. Catch incorrect usage with an ASSERT().

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/thread.cpp | 2 ++
 1 file changed, 2 insertions(+)

Comments

Niklas Söderlund May 23, 2021, 6:41 a.m. UTC | #1
Hi Laurent,

Thanks for your patch.

On 2021-05-23 05:31:53 +0300, Laurent Pinchart wrote:
> The Thread::dispatchMessages() function is meant to be called from
> within the thread only. Catch incorrect usage with an ASSERT().
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

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

> ---
>  src/libcamera/thread.cpp | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
> index 285b808332e8..bc1dcedea0d1 100644
> --- a/src/libcamera/thread.cpp
> +++ b/src/libcamera/thread.cpp
> @@ -560,6 +560,8 @@ void Thread::removeMessages(Object *receiver)
>   */
>  void Thread::dispatchMessages(Message::Type type)
>  {
> +	ASSERT(data_ == ThreadData::current());
> +
>  	MutexLocker locker(data_->messages_.mutex_);
>  
>  	std::list<std::unique_ptr<Message>> &messages = data_->messages_.list_;
> -- 
> Regards,
> 
> Laurent Pinchart
>
Umang Jain May 24, 2021, 2:43 a.m. UTC | #2
Hi Laurent,

Thanks for the patch

On 5/23/21 8:01 AM, Laurent Pinchart wrote:
> The Thread::dispatchMessages() function is meant to be called from
> within the thread only. Catch incorrect usage with an ASSERT().
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
> ---
>   src/libcamera/thread.cpp | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
> index 285b808332e8..bc1dcedea0d1 100644
> --- a/src/libcamera/thread.cpp
> +++ b/src/libcamera/thread.cpp
> @@ -560,6 +560,8 @@ void Thread::removeMessages(Object *receiver)
>    */
>   void Thread::dispatchMessages(Message::Type type)
>   {
> +	ASSERT(data_ == ThreadData::current());
> +
>   	MutexLocker locker(data_->messages_.mutex_);
>   
>   	std::list<std::unique_ptr<Message>> &messages = data_->messages_.list_;
Hirokazu Honda May 24, 2021, 5:39 a.m. UTC | #3
Hi Laurent, thank you for the patch.

On Mon, May 24, 2021 at 11:43 AM Umang Jain <umang.jain@ideasonboard.com>
wrote:

> Hi Laurent,
>
> Thanks for the patch
>
> On 5/23/21 8:01 AM, Laurent Pinchart wrote:
> > The Thread::dispatchMessages() function is meant to be called from
> > within the thread only. Catch incorrect usage with an ASSERT().
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
>

Reviewed-by: Hirokazu Honda <hiroh@chromium.org>


> > ---
> >   src/libcamera/thread.cpp | 2 ++
> >   1 file changed, 2 insertions(+)
> >
> > diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
> > index 285b808332e8..bc1dcedea0d1 100644
> > --- a/src/libcamera/thread.cpp
> > +++ b/src/libcamera/thread.cpp
> > @@ -560,6 +560,8 @@ void Thread::removeMessages(Object *receiver)
> >    */
> >   void Thread::dispatchMessages(Message::Type type)
> >   {
> > +     ASSERT(data_ == ThreadData::current());
> > +
> >       MutexLocker locker(data_->messages_.mutex_);
> >
> >       std::list<std::unique_ptr<Message>> &messages =
> data_->messages_.list_;
>
>

Patch
diff mbox series

diff --git a/src/libcamera/thread.cpp b/src/libcamera/thread.cpp
index 285b808332e8..bc1dcedea0d1 100644
--- a/src/libcamera/thread.cpp
+++ b/src/libcamera/thread.cpp
@@ -560,6 +560,8 @@  void Thread::removeMessages(Object *receiver)
  */
 void Thread::dispatchMessages(Message::Type type)
 {
+	ASSERT(data_ == ThreadData::current());
+
 	MutexLocker locker(data_->messages_.mutex_);
 
 	std::list<std::unique_ptr<Message>> &messages = data_->messages_.list_;