[PATCH v1 5/5] libcamera: shared_mem_object: Remove is_standard_layout restriction

Naushir Patuck naush at raspberrypi.com
Thu May 2 12:43:56 CEST 2024


Hi Jacopo,

On Thu, 2 May 2024 at 11:08, Jacopo Mondi <jacopo.mondi at ideasonboard.com> wrote:
>
> Hi Naush
>
> On Thu, May 02, 2024 at 09:09:25AM GMT, Naushir Patuck wrote:
> > The shared_mem_object may be used to construct complex classes, so
> > remove the standard layout type restriction.
> >
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
>
> Can you already tell which non-standard-layout class you need to wrap
> in a SharedMemObject ?
>
> My only concern is
> "Standard layout types are useful for communicating with code written
> in other programming languages."
>
> but as SharedMemObject is internal maybe I'm just over-concerned

I am using the SharedMemObject to wrap the BackEnd and FrontEnd class
objects (from libpisp) in the Pi 5 pipeline handler and IPA.

My original implementation did not include this constraint, I think it
would be quite limiting if we could not use it for C++ objects in our
case :)

Regards,
Naush

>
>
> > ---
> >  include/libcamera/internal/shared_mem_object.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/include/libcamera/internal/shared_mem_object.h b/include/libcamera/internal/shared_mem_object.h
> > index 9b1d939302a8..c9c0482062bd 100644
> > --- a/include/libcamera/internal/shared_mem_object.h
> > +++ b/include/libcamera/internal/shared_mem_object.h
> > @@ -56,7 +56,7 @@ private:
> >       Span<uint8_t> mem_;
> >  };
> >
> > -template<class T, typename = std::enable_if_t<std::is_standard_layout<T>::value>>
> > +template<class T>
> >  class SharedMemObject : public SharedMem
> >  {
> >  public:
> > --
> > 2.34.1
> >


More information about the libcamera-devel mailing list