<div dir="ltr"><div dir="ltr">Hi David,<div><br></div><div>Thank you for fixing this!</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 11 Nov 2022 at 13:30, David Plowman via libcamera-devel <<a href="mailto:libcamera-devel@lists.libcamera.org">libcamera-devel@lists.libcamera.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Implement the PipelineHandlerRPi::releaseDevice method which allows<br>
us to free any allocated buffers when a camera is released.<br>
<br>
Signed-off-by: David Plowman <<a href="mailto:david.plowman@raspberrypi.com" target="_blank">david.plowman@raspberrypi.com</a>><br>
---<br>
src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 8 ++++++++<br>
1 file changed, 8 insertions(+)<br>
<br>
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
index f15fa28b..785eddf9 100644<br>
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
@@ -337,6 +337,8 @@ public:<br>
<br>
bool match(DeviceEnumerator *enumerator) override;<br>
<br>
+ void releaseDevice(Camera *camera) override;<br>
+<br>
private:<br>
RPiCameraData *cameraData(Camera *camera)<br>
{<br>
@@ -1193,6 +1195,12 @@ bool PipelineHandlerRPi::match(DeviceEnumerator *enumerator)<br>
return !!numCameras;<br>
}<br>
<br>
+void PipelineHandlerRPi::releaseDevice(Camera *camera)<br>
+{<br>
+ RPiCameraData *data = cameraData(camera);<br>
+ data->freeBuffers();<br>
+}<br></blockquote><div><br></div><div>My head's spinning with all these related changes now :-)</div><div><br></div><div>Presumably for this to work correctly, RPiCameraData::freeBuffers() must not do the</div><div>if (!buffersAllocated_) test, correct? So this change relies on [1] to behave correctly?</div><div><br></div><div>Reviewed-by: Naushir Patuck <<a href="mailto:naush@raspberrypi.com">naush@raspberrypi.com</a>></div><div><br></div><div>[1] <a href="https://patchwork.libcamera.org/patch/17759/">https://patchwork.libcamera.org/patch/17759/</a></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+<br>
int PipelineHandlerRPi::registerCamera(MediaDevice *unicam, MediaDevice *isp, MediaEntity *sensorEntity)<br>
{<br>
std::unique_ptr<RPiCameraData> data = std::make_unique<RPiCameraData>(this);<br>
-- <br>
2.30.2<br>
<br>
</blockquote></div></div>