[libcamera-devel] [PATCH v2 3/8] libcamera: v4l2_device: streamOff() when releasing buffers

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Feb 13 17:30:36 CET 2019


Hi Laurent,

On 13/02/2019 15:41, Laurent Pinchart wrote:
> Hi Kieran,
> 
> Thank you for the patch.
> 
> On Wed, Feb 13, 2019 at 03:10:22PM +0000, Kieran Bingham wrote:
>> We must ensure that the stream is disabled before releasing buffers. It will
>> not hurt to call streamOff() even if it is already off before releasing any
>> buffers back to the device.
> 
> I'm not sure about this one. Doesn't it indicate a problem in the caller
> instead ?

Perhaps. It means (in the cases that I've hit) that the error paths have
not called streamOff().

Is it more preferable to leave buffers 'un-released'?

Perhaps would you prefer to see releaseBuffers return an error if it
fails? As this is likely to be on cleanup paths, and destruction - what
would you expect the application to do in the event of failure to
releaseBuffers? (I guess - fix their code...)


Either way - I'll just drop this patch for now.

--
Kieran


>> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
>> ---
>>  src/libcamera/v4l2_device.cpp | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
>> index 23c0da295905..83073c28b817 100644
>> --- a/src/libcamera/v4l2_device.cpp
>> +++ b/src/libcamera/v4l2_device.cpp
>> @@ -642,6 +642,8 @@ int V4L2Device::releaseBuffers()
>>  {
>>  	LOG(V4L2, Debug) << "Releasing bufferPool";
>>  
>> +	streamOff();
>> +
>>  	requestBuffers(0);
>>  	bufferPool_ = nullptr;
>>  
> 

-- 
Regards
--
Kieran


More information about the libcamera-devel mailing list