libcamera: framebuffer: Make FrameBuffer::cancel() private

FrameBuffer::cancel() is not meant to be used by applications. Move it
to the FrameBuffer::Private class.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Dorota Czaplejewicz <dorota.czaplejewicz@puri.sm>
[Kieran: Handle rebase]
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Dorota Czaplejewicz 2021-11-19 16:05:58 +01:00 committed by Kieran Bingham
parent cef3e15324
commit d98af71eaa
7 changed files with 17 additions and 15 deletions

View file

@ -71,8 +71,6 @@ public:
std::unique_ptr<Fence> releaseFence();
void cancel() { metadata_.status = FrameMetadata::FrameCancelled; }
private:
LIBCAMERA_DISABLE_COPY_AND_MOVE(FrameBuffer)

View file

@ -31,6 +31,8 @@ public:
Fence *fence() const { return fence_.get(); }
void setFence(std::unique_ptr<Fence> fence) { fence_ = std::move(fence); }
void cancel() { LIBCAMERA_O_PTR()->metadata_.status = FrameMetadata::FrameCancelled; }
private:
std::unique_ptr<Fence> fence_;
Request *request_;

View file

@ -186,6 +186,14 @@ FrameBuffer::Private::~Private()
* fence and handle it opportunely before using the buffer again.
*/
/**
* \fn FrameBuffer::Private::cancel()
* \brief Marks the buffer as cancelled
*
* If a buffer is not used by a request, it shall be marked as cancelled to
* indicate that the metadata is invalid.
*/
/**
* \class FrameBuffer
* \brief Frame buffer data and its associated dynamic metadata
@ -407,12 +415,4 @@ std::unique_ptr<Fence> FrameBuffer::releaseFence()
return std::move(_d()->fence_);
}
/**
* \fn FrameBuffer::cancel()
* \brief Marks the buffer as cancelled
*
* If a buffer is not used by a request, it shall be marked as cancelled to
* indicate that the metadata is invalid.
*/
} /* namespace libcamera */

View file

@ -28,6 +28,7 @@
#include "libcamera/internal/camera_sensor.h"
#include "libcamera/internal/delayed_controls.h"
#include "libcamera/internal/device_enumerator.h"
#include "libcamera/internal/framebuffer.h"
#include "libcamera/internal/ipa_manager.h"
#include "libcamera/internal/media_device.h"
#include "libcamera/internal/pipeline_handler.h"
@ -836,7 +837,7 @@ void IPU3CameraData::cancelPendingRequests()
for (auto it : request->buffers()) {
FrameBuffer *buffer = it.second;
buffer->cancel();
buffer->_d()->cancel();
pipe()->completeBuffer(request, buffer);
}
@ -1356,7 +1357,7 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
for (auto it : request->buffers()) {
FrameBuffer *b = it.second;
b->cancel();
b->_d()->cancel();
pipe()->completeBuffer(request, b);
}

View file

@ -1907,7 +1907,7 @@ void RPiCameraData::clearIncompleteRequests()
* request? If not, do so now.
*/
if (buffer->request()) {
buffer->cancel();
buffer->_d()->cancel();
pipe()->completeBuffer(request, buffer);
}
}

View file

@ -32,6 +32,7 @@
#include "libcamera/internal/camera.h"
#include "libcamera/internal/camera_sensor.h"
#include "libcamera/internal/device_enumerator.h"
#include "libcamera/internal/framebuffer.h"
#include "libcamera/internal/ipa_manager.h"
#include "libcamera/internal/media_device.h"
#include "libcamera/internal/pipeline_handler.h"
@ -574,7 +575,7 @@ void VimcCameraData::bufferReady(FrameBuffer *buffer)
if (buffer->metadata().status == FrameMetadata::FrameCancelled) {
for (auto it : request->buffers()) {
FrameBuffer *b = it.second;
b->cancel();
b->_d()->cancel();
pipe->completeBuffer(request, b);
}

View file

@ -129,7 +129,7 @@ void Request::Private::doCancelRequest()
Request *request = _o<Request>();
for (FrameBuffer *buffer : pending_) {
buffer->cancel();
buffer->_d()->cancel();
camera_->bufferCompleted.emit(request, buffer);
}