[RFC,v1,06/10] libcamera: software_isp: debayer_egl: Avoid EGL context leaks
diff mbox series

Message ID 20260804101949.353266-7-barnabas.pocze@ideasonboard.com
State Superseded
Headers show
Series
  • libcamera: software_isp: debayer_egl: Remove some leaks
Related show

Commit Message

Barnabás Pőcze Aug. 4, 2026, 10:19 a.m. UTC
Currently each `start()` invocation causes a new EGL context to
be acquired, and only the last allocation will be properly freed
in the `eGL` destructor.

To avoid that, call `eGL::resetEGLContext()` in `stop()`.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 src/libcamera/software_isp/debayer_egl.cpp | 2 ++
 1 file changed, 2 insertions(+)

Comments

Milan Zamazal Aug. 5, 2026, 10:22 a.m. UTC | #1
Barnabás Pőcze <barnabas.pocze@ideasonboard.com> writes:

> Currently each `start()` invocation causes a new EGL context to
> be acquired, and only the last allocation will be properly freed
> in the `eGL` destructor.
>
> To avoid that, call `eGL::resetEGLContext()` in `stop()`.
>
> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>

Reviewed-by: Milan Zamazal <mzamazal@redhat.com>

> ---
>  src/libcamera/software_isp/debayer_egl.cpp | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp
> index ede3be2352..35a5c56321 100644
> --- a/src/libcamera/software_isp/debayer_egl.cpp
> +++ b/src/libcamera/software_isp/debayer_egl.cpp
> @@ -682,6 +682,8 @@ void DebayerEGL::stop()
>  
>  	if (programId_)
>  		glDeleteProgram(programId_);
> +
> +	egl_.resetEGLContext();
>  }
>  
>  SizeRange DebayerEGL::sizes(PixelFormat inputFormat, const Size &inputSize)

Patch
diff mbox series

diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp
index ede3be2352..35a5c56321 100644
--- a/src/libcamera/software_isp/debayer_egl.cpp
+++ b/src/libcamera/software_isp/debayer_egl.cpp
@@ -682,6 +682,8 @@  void DebayerEGL::stop()
 
 	if (programId_)
 		glDeleteProgram(programId_);
+
+	egl_.resetEGLContext();
 }
 
 SizeRange DebayerEGL::sizes(PixelFormat inputFormat, const Size &inputSize)